ASP.NET MVC 3 直到我膝蓋中了一箭【2】Razor視圖引擎

來源:互聯網
上載者:User

  "Razor"是一個非常好的新的視圖引擎,它提供了流暢的專註於代碼的模版方案。它的編碼工作流程快速、富有表現力並有趣。文法簡練並節省按鍵次數,同時還提升了代碼的可讀性。ASP.NET的ASPX標記文法使用"<%= %>"或"<%: %>"來標記"代碼碎塊",每一個代碼碎塊都需要5個字元來標明代碼的開始和結束位置。在Razor視圖引擎中,你只需要用一個"@"字元就可以標識代碼塊的開始,與"<% %>"代碼碎塊不一樣,Razor不需要你顯式指明代碼塊的結束位置。

1.注釋

1     @*我是注釋1*@2     <!--我是注釋2-->3     @{4         //我是注釋35     }

2.執行C#語句

1 <b>執行C#語句:</b>2     @DateTime.Now.Date.ToShortDateString()

3.執行C#代碼塊

 1 <b>執行C#代碼塊:</b> 2     @*支援C#文法:注意";"*@ 3     @{ 4         List<string> list = new List<string>() { "MVC3", "Razor" }; 5         list.Add(".Net4"); 6         list.Add(""); 7     } 8     @* 支援邏輯關鍵字如foreach if else等*@ 9     @foreach (string s in list)10     {11         if (string.IsNullOrEmpty(s))12         {13         <li>空</li>14         }15         else16         {17         <li>@s</li>18         }19     }20     @* 文字輸出 變數輸出*@21     @{22         @:@list[0]23             @:list[0]24             }

4.使用html標記輸出變數、文本

5.@{...}內部使用@:進行單行輸出變數、文本,否則報錯。

6.Email和@符號

  大部分情況下,Razor解析器都有足夠的能力推匯出模板裡的一個"@"字元到底是在代碼中用到,還是在靜態常值內容中用到。Razor會分析"@"字元右邊的內容來判斷它到底是代碼還是靜態常值內容(電子郵件被當作靜態內容輸出)。

1     @{2         //輸出@3         @:&#644         //輸出@5         @:@@6         //自動識別email輸出lhp0704@163.com7         @:lhp0704@163.com8                 }

 7.@Url.Content

  將虛擬(相對)路徑轉換為應用程式絕對路徑。如果指定的內容路徑不以否定號 (~) 字元開頭,此方法將返回沒有改變的 contentPath。

1     <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />2     <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>

8.@RenderSection()

  可以有選擇性地定義幾個不同的"節",允許基於這個版面設計的視圖模板通過"填入"自訂的內容來覆寫它。這就允許你在視圖中覆寫版面設計頁裡不連續的內容段落,從而使你的網站版面設計更有彈性。

false表示具體頁面可以不實現section Head。

1     @*使用@RenderSection方法預設一個地區,未來給繼承該頁的View使用*@2     @RenderSection("Head", required: false)
1 @section Head{2     <script type="text/javascript">3         $(function () {4             alert("Hello World");5         });6     </script>

9.@RenderBody()

  使用RenderBody()的輔助函數,放在模板中需要根據所請求的URL而"填入"具體內容的地方。

~/Views/Shared/下_Layout.cshtml

1         <div>2             開始3             @RenderBody()4             結束5         </div>

 ~/Views/Home/下Index.cshtml

1 @{2     ViewBag.Title = "首頁";3 }4 <p>5      將內容放置在此處@RenderBody()。6 </p>

10.@RenderPage()

~/Views/Shared/下_Layout.cshtml

 1         <div> 2             開始 3             @RenderBody() 4             結束 5             <br /> 6             開始 7             @*可以多次使用*@ 8             @RenderPage("~/Views/Home/About.cshtml") 9             結束10         </div>

~/Views/Home/下About.cshtml

1 @{2     ViewBag.Title = "關於我們";3 }4 <p>5      將內容放置在此處。6 </p>

11.資料傳遞

  ViewData擷取或設定一個字典,其中包含在控制器和視圖之間傳遞的資料。

  ViewBag擷取視圖包。

  TempData擷取要傳遞到視圖的臨時資料。

 ~/Views/Home/下Index.cshtml

1 @{2     ViewBag.Title = "首頁";3 }4 <p>5      將內容放置在此處@RenderBody()。6 </p>

~/Controllers/下HomeController.cs

1         public ActionResult Index()2         {3             ViewBag.Message = "歡迎使用 ASP.NET MVC!";4             ViewData["Name1"] = "Razor視圖引擎1";5             TempData["Name2"] = "Razor視圖引擎2";6             return View();7         }

~/Views/Shared/下_Layout.cshtml

 1 <!DOCTYPE html> 2 <html> 3 <head> 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5     <title>@ViewBag.Title</title> 6 </head> 7 <body> 8     <div> 9         @RenderBody()10         @ViewBag.Message<br />11         @ViewData["Name1"]<br />12         @TempData["Name2"]13     </div>14 </body>15 </html>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.