Razor語法

  • 2019 年 10 月 7 日
  • 筆記

  Razor作為一種全新的模板被MVC3和WebMatrix使用。儘管目前還存在一定性能上面的問題,但一直不喜歡WebForm標籤式寫法的人已經看到了福音。Razor在減少程式碼冗餘、增強程式碼可讀性和vs 智慧感知方面,都有著突出的優勢。本文將結合示例,總結出Razor的基本用法,以便於更多人了解Razor、使用Razor。

  1.開發工具

  Razor是MVC3中的一個視圖模板引擎,所以,我們只需要在VS2010中安裝一個MVC3的工具,就可以使用Razor了。

  如果你不想使用MVC3,還有另外一種選擇,那便是WebMatrix + VS 2010;WebMatrix提供了Razor模板的網站,但它並不是一個優秀的IDE,沒有像VS一樣的智慧感知和編輯時錯誤提醒功能。所以,在使用WebMatrix創建了Razor引擎的網站後,可以在VS2010中打開進行編輯。本文示例所使用的就是這種方式。

2.Razor的文件類型

  Razor支援兩種文件類型,分別是.cshtml 和.vbhtml,其中.cshtml 的伺服器程式碼使用了c#的語法,.vbhtml 的伺服器程式碼使用了vb.net的語法。

  由此也可以看出,Razor其實是一種伺服器程式碼和HTML程式碼混寫的程式碼模板,類似於沒有後置程式碼的.aspx文件。

  3.Razor語法之@符號

  @字元是Razor中的一個重要符號,它被定義為Razor伺服器程式碼塊的開始符號。如果我們希望在網頁中輸出一個變數,或者當前日期,我們可以使用如下程式碼:

    @{string productName = "檯燈";}      <span>@productName</span>      <span>@DateTime.Now.ToString("yyyy-MM-hh")</span>

  當你在完成這段程式碼的時候,你會發現VS 2010為我們提供了程式碼著色和智慧感知:

  運行這段程式碼,讓我們看看瀏覽器的顯示內容:

  有這個示例可以看出,@符號標記了一個HTML程式碼的輸出,在其後的變數、方法返回值和表達式運算結果會進行輸出。

4.Razor語法之程式碼塊定義

  你可以使用@{code}來定義一段程式碼塊。

@{      int num1 =10;      int num2 =5;        int sum = num1 + num2;      @sum;  }

  在程式碼塊中,我們編寫程式碼的方式和通常伺服器端程式碼的方式是一樣的。另外,如果需要輸出,例如上面的在頁面中輸出結果,我們可以使用@sum完成輸出

  另外,@(code)可以輸出一個表達式的運算結果,上面的程式碼我們也可以寫成這樣:

    @{          int num1 =10;          int num2 =5;            int sum = num1 + num2;          @(num1 +num2);      }

5.Razor語法之程式碼混寫

  Razor支援程式碼混寫。在程式碼塊中插入HTML、在HTML中插入Razor語句都是可以的。

@{      int num1 =10;      int num2 =5;        int sum = num1 + num2;      string color ="Red";      <font color="@color">@sum</font>  }

  值得稱讚的是,即使我們這樣混寫,也不影響VS2010的智慧感知功能。

  • 輸出@符號:@@
  • 輸出Email地址:Razor模板會自動識別出Email地址,所以不需要我們進行任何的轉換。而在程式碼塊中,只需要使用 @:[email protected] 即可。@:表示後面的內容為文本。
  • 輸出HTML程式碼(包含標籤):直接輸出,string html = "<font color='red'>文本</font>"; @html
  • 輸出HTML內容(不包含標籤):有兩種方法,第一種:IHtmlString html=new HtmlString("<font color='red'>文本</font>"); @html; 第二種:string html = "<font color='red'>文本</font>"; @Html.Raw(html);

6.Razor語法之注釋

  這裡所說的注釋是指伺服器端的注釋,在Razor程式碼塊中,可以使用C#的注釋方式來進行注釋,分別是//:(單行注釋)和/**/(多行注釋)。

  另外,Razor還提供了一種新的伺服器段程式碼注釋,可以即注釋C#程式碼,同時可以注釋HTML程式碼,@**@,這種注釋方式不受程式碼塊的限制,在Razor程式碼中的任何位置都額可以。

    @*      這是一個注釋      <b>這個是注釋</b>      *@

  OK,Razor的基礎語法就講到這裡,我將在下一篇博文中講解如何復用Razor程式碼,感謝您的關注,也希望這篇博文對您有所幫助!

Tags: