ASPX 優點: 通過上面小小的對比,不難看出,與ASP.NET MVC緊密集成,對於以往ASP.NET開發人員有更好體驗。其實它還有其他幾優點: ●智能感應 ●能選擇其它語言的 CodeDom provider (例如: C#, VB.NET, F#, Boo, Nemerle) ●立即編譯或預編 ...
ASPX
優點: 通過上面小小的對比,不難看出,與ASP.NET MVC緊密集成,對於以往ASP.NET開發人員有更好體驗。其實它還有其他幾優點: ●智能感應 ●能選擇其它語言的 CodeDom provider (例如: C#, VB.NET, F#, Boo, Nemerle) ●立即編譯或預編譯的views 缺點: 當然也有缺點了: ●在Asp.net MVC中容易與經典的Asp.net模式混淆起來,並且Asp.net MVC已不再支持它們。 (例如: ViewState PostBack) ●智能感應強迫樣式總是不在內聯的代碼塊。 ●設計簡單模板時會凌亂。Razor
優點: ●結構緊湊,表達式流暢 ●易於學習 ●具有很好的智能感知 ●可以單元測試 缺點: ●創建一個稍微輕量級的“標簽團”問題。伺服器端標簽實際上提供了圍繞伺服器的結構代碼和非伺服器端代碼,Razor混淆HTML和伺服器端代碼,純HTML和JS的開發具有挑戰性。 ●語法是面向HTML生成非HTML的內容可能會非常棘手。儘管這樣,Razor的數據模型實際上只是字元串串聯,語法和嵌套錯誤,既不是靜態或動態檢測,雖然VS.NET設計時幫助減輕這個有確點。可維護性和可重構性也受限於此。總之: 如果習慣了在WebForm中,在前臺寫代碼,那麼aspx引擎更熟悉。Razor引擎簡化了輸入,直接@就可以開始寫代碼了,顯得更簡潔。推薦Razor,語法更人性化。 語法代碼示例,簡單對比這兩者區別
語法名稱 |
Razor 語法 |
Aspx 等效語法 |
代碼塊(服務端) |
@{ int x = 123; string y = "test."; } |
<% int x = 123; string y = "test."; %> |
表達式 |
encode:<p>@model.Message</p> no encode:<p> @Html.Raw(model.Message)</p> |
encode:<p><%:model.Message %></p> no encode:<p><%= model.Message %></p> |
結合文本和標記的迴圈 |
@foreach(var item in items) { <p>@item.Prop</p> } |
<% foreach(var item in items) { %> <p><%:item.Prop %></p> <% } %> |
代碼和文本混合 |
@if (foo) { <text>Plain Text</text> }
@if (foo) { @:Plain Text is @bar } |
<% if (foo) { %> Plain Text <% } %> |
伺服器端註釋 |
@* This is a server side multiline comment *@ |
<%-- This is a server side multiline comment --%> |
調用一個方法 |
@(MyClass.MyMethod<AType>()) 使用括弧來明確表達是什麼. |
|
混合表達式和文本 |
Hello @title. @name. |
Hello <%: title %>. <%: name %>. |