MVC3.0 中Razor 學習

      隨着MVC3.0RTM版本的發佈,最近將公司的項目從MVC2.0升級到MVC3.0。同時打算在MVC3中全面使用Razor模板引擎。現將Razor學習拿出來和你們分享,若是存在不足的地方歡迎您指出。javascript

     其實在使用<%= %>在html中調用C#代碼時,心裏總在埋怨。這個寫法很是麻煩。麻煩在哪呢?其實就是閉合。好比:css

     Asp.net: <script src="<%=Url.Content("~/Scripts/jquery-1.4.4.min.js")%>"html

     Razor:   <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" java

很是明顯,Razor在內部幫咱們作了閉合「%>」。其實就是這個小小的閉合讓咱們能夠在html內更加「流暢」的調用服務端代碼。故Razor給開發帶來了必定的便捷!下面介紹Razor的基本用法。jquery

     1、模板頁asp.net


       Razor出現後咱們就能夠選擇再也不使用asp.net master 模板頁。取而代之的是cshtml razor的模板文件。用法我的認爲仍是和master模板頁相似。但在mater模板頁的原有功能上有了進一步擴展,更方便開發。好比只要在View文件夾內加入_ViewStart.cshtml文件,咱們就無需在每個具體的View頁面引入模板頁。減小View頁面內的重複代碼。具體的能夠創建一個MVC3 Application 選擇razor模板,VS會自動創建上述機制。這裏值得提出的是@RenderSection方法。可讓咱們在模板頁預設一個區域,將來給繼承該模板頁的View使用。具體請看如下操做:學習

   在MVC3.0 shared文件夾下_Layout.cshtml這個模板文件內加入如下代碼: 網站

<!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行,預留出一個Head的section。 熟悉模板頁的人,應該明白該處是預留是給將來具體的View頁面自定義特定js/css使用的。這個View咱們就用默認的Home底下的Index來舉例。打開index.cshtml 寫入如下代碼 ui

@{
    ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
@section Head{
    <script type="text/javascript">
        $(function () {
            alert("hello jquery");
        });
    </script>
}

 

該View已經集成了模板頁,這裏只是填充模板頁內的Head section這時就能夠加入咱們的針對每一個view頁面的js或者CSS了。至此達到共性外的個性。spa

 

    2、Razor語法:


    文章開頭就已經提到了,我的認爲Razor語法的便捷在於razor自動幫助咱們閉合C#或VB.NET在html的語法。請看如下代碼:

已經給出註釋了,仔細閱讀並不難理解。您應該也能體會到若是將razor換成asp.net的<%= %>或者<%: %>寫法,實際上是很「痛苦」的。至於razor的其餘用法官方網站已經寫的很全面了,好比razor的已經爲咱們 HTML Encod防止XSS攻擊、html中字符串中出現×××@×××.com這樣的文本,Razor是能夠自動識別成Email格式而不是Razor的關鍵字。


    3、 Razor 語法智能提示:


     該智能提示與VS內的同樣,只需Ctrol + J 便可調出。具體的請看下圖:

您是否和我同樣也打算在Web開發中全面使用Razor呢?本文的例子在這裏下載


原文連接: http://www.cnblogs.com/ryanding/archive/2011/01/19/1938690.html
相關文章
相關標籤/搜索