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程式碼,感謝您的關注,也希望這篇博文對您有所幫助!