天天看點

Razor文法

  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為我們提供了代碼着色和智能感覺:

Razor文法

  運作這段代碼,讓我們看看浏覽器的顯示内容:

Razor文法

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

  4.Razor文法之代碼塊定義

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

Razor文法
Razor文法

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

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

Razor文法
Razor文法

  

  5.Razor文法之代碼混寫

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

Razor文法
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代碼中的任何位置都額可以。