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伺服器代碼塊的開始符号。如果我們希望在網頁中輸出一個變量,或者目前日期,我們可以使用如下代碼:
當你在完成這段代碼的時候,你會發現VS 2010為我們提供了代碼着色和智能感覺:
運作這段代碼,讓我們看看浏覽器的顯示内容:
有這個示例可以看出,@符号标記了一個HTML代碼的輸出,在其後的變量、方法傳回值和表達式運算結果會進行輸出。
4.Razor文法之代碼塊定義
你可以使用@{code}來定義一段代碼塊。
在代碼塊中,我們編寫代碼的方式和通常伺服器端代碼的方式是一樣的。另外,如果需要輸出,例如上面的在頁面中輸出結果,我們可以使用@sum完成輸出
另外,@(code)可以輸出一個表達式的運算結果,上面的代碼我們也可以寫成這樣:
5.Razor文法之代碼混寫
Razor支援代碼混寫。在代碼塊中插入HTML、在HTML中插入Razor語句都是可以的。
值得稱贊的是,即使我們這樣混寫,也不影響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代碼中的任何位置都額可以。