走進(jìn)ASP.NET MVC 3.0中的Razor模板引擎
隨著MVC3.0RTM版本的發(fā)布,最近將公司的項(xiàng)目從MVC2.0升級(jí)到MVC3.0。同時(shí)打算在MVC3中全面使用Razor模板引擎?,F(xiàn)將Razor學(xué)習(xí)拿出來(lái)和大家分享,如果存在不足的地方歡迎您指出。
其實(shí)在使用<%= %>在html中調(diào)用C#代碼時(shí),內(nèi)心總在埋怨。這個(gè)寫法非常麻煩。麻煩在哪呢?其實(shí)就是閉合。比如:
Asp.net: <script src="<%=Url.Content("~/Scripts/jquery-1.4.4.min.js")%>"
Razor: <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")"
非常明顯,Razor在內(nèi)部幫我們做了閉合“%>”。其實(shí)就是這個(gè)小小的閉合讓我們可以在html內(nèi)更加“流暢”的調(diào)用服務(wù)端代碼。故Razor給開發(fā)帶來(lái)了一定的便捷!下面介紹Razor的基本用法。
一、模板頁(yè)
Razor出現(xiàn)后我們就可以選擇不再使用asp.net master 模板頁(yè)。取而代之的是cshtml razor的模板文件。用法個(gè)人認(rèn)為還是和master模板頁(yè)類似。但在mater模板頁(yè)的原有功能上有了進(jìn)一步擴(kuò)展,更方便開發(fā)。比如只要在View文件夾內(nèi)加入_ViewStart.cshtml文件,我們就無(wú)需在每一個(gè)具體的View頁(yè)面引入模板頁(yè)。減少View頁(yè)面內(nèi)的重復(fù)代碼。具體的可以建立一個(gè)MVC3 Application 選擇razor模板,VS會(huì)自動(dòng)建立上述機(jī)制。這里值得提出的是@RenderSection方法??梢宰屛覀?cè)谀0屙?yè)預(yù)設(shè)一個(gè)區(qū)域,未來(lái)給繼承該模板頁(yè)的View使用。具體請(qǐng)看以下操作:
在MVC3.0 shared文件夾下_Layout.cshtml這個(gè)模板文件內(nèi)加入以下代碼:
- <!DOCTYPE html>
- <html>
- <head>
- <title>@ViewBag.Title</title>
- <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
- <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
- @RenderSection("Head", required: true)
- </head>
- <body>
- <div class="page">
以上代碼第7行,預(yù)留出一個(gè)Head的section。 熟悉模板頁(yè)的人,應(yīng)該明白該處是預(yù)留是給未來(lái)具體的View頁(yè)面自定義特定js/css使用的。這個(gè)View我們就用默認(rèn)的Home底下的Index來(lái)舉例。打開index.cshtml 寫入以下代碼
- @{
- ViewBag.Title = "Home Page";
- }
- h2>@ViewBag.Message</h2>
- @section Head{
- <script type="text/javascript">
- $(function () {
- alert("hello jquery");
- });
- </script>
- }
該View已經(jīng)集成了模板頁(yè),這里只是填充模板頁(yè)內(nèi)的Head section這時(shí)就可以加入我們的針對(duì)每個(gè)view頁(yè)面的js或者CSS了。至此達(dá)到共性外的個(gè)性。
二、Razor語(yǔ)法:
文章開頭就已經(jīng)提到了,個(gè)人認(rèn)為Razor語(yǔ)法的便捷在于razor自動(dòng)幫助我們閉合C#或VB.NET在html的語(yǔ)法。請(qǐng)看以下代碼:
已經(jīng)給出注釋了,仔細(xì)閱讀并不難理解。您應(yīng)該也能體會(huì)到如果將razor換成asp.net的<%= %>或者<%: %>寫法,其實(shí)是很“痛苦”的。至于razor的其他用法官方網(wǎng)站已經(jīng)寫的很全面了,比如razor的已經(jīng)為我們 HTML Encod防止XSS攻擊、html中字符串中出現(xiàn)×××@×××.com這樣的文本,Razor是可以自動(dòng)識(shí)別成Email格式而不是Razor的關(guān)鍵字。
三、 Razor 語(yǔ)法智能提示:
該智能提示與VS內(nèi)的一樣,只需Ctrol + J 即可調(diào)出。具體的請(qǐng)看下圖
您是否和我一樣也打算在Web開發(fā)中全面使用Razor呢?
原文鏈接:http://www.cnblogs.com/ryanding/archive/2011/01/19/1938690.html
【編輯推薦】