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

来源:http://www.cnblogs.com/likeyou/archive/2016/08/04/5735992.html
-Advertisement-
Play Games

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄索引 【無私分享:ASP.NET CORE 項目實戰】目錄索引 簡介 在我們之前的Asp.net mvc 開發中,一提到配置文件,我們不由的想到 web.config 和 app.config,在 core 中,我們看到了很多的變化,新的配置系統顯得更加輕量級,具有更好的擴展性,並且支持多樣化的 ...
  • 在JSON沒流行起來的時候xml一直作為程式存儲配置信息的主流介質;特別是小型數據表方面還是不錯的選擇,所以經常涉及到的操作無非也就是增刪改查,這篇博客主要是對這些對比較常用的操作做了個簡單的總結 文件載入 SelectNodes()、SelectSingleNode()節點獲取大法 創建XML文檔 ...
  • 這兩天在學習C#,C#高級編程真的是厚厚的一本書QAQ。 昨天看了一下裡面的通信部分(其實還沒怎麼看),看了網上一些人的博客,自己在他們的博客基礎上寫了一個通信。 先來講述下我自己對於整個Socket通信過程的理解,畢竟初學,說錯見諒,知道錯了會改正~ 首先在服務端新建一個serverSocket, ...
  • Web.config配置文件的system.web節點增加: <customErrors mode="On" defaultRedirect="Default/Index"> <error statusCode="404" redirect="Default/Page404" /> <error s ...
  • 在調用部分三方庫時,由於三方庫是基於.NET2.0的。所以在4.0的程式中無法載入。解決方案如下: 在配置文件中添加以下配置 <?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true ...
  • .NET Core中間件的註冊和管道的構建(1) 註冊和構建原理 0x00 問題的產生 管道是.NET Core中非常關鍵的一個概念,很多重要的組件都以中間件的形式存在,包括許可權管理、會話管理、路由等。所以搞明白中間件是如何註冊並最終構建成管道的很重要。園子里很多先驅早已經開始了這方面的研究學習,也 ...
  • winform: webform: https://github.com/asposemarketplace/Aspose_for_OpenXML ...
  • public void Out(out int a, out int b) {//out相當於return返回值 //可以返回多個值 //拿過來變數名的時候,裡面預設為空值 a=1; b=2; } static void Main(string[] args) { int a = 0; int b ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...