.NET MVC 兩種視圖引擎(Razor、Aspx)


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 %>.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM