Razor,很有意思的剃刀。相較與之前開發WEB的方式,Razor真是輕松惬意。
下面說一下我使用Razor的一些心得。
頁面中歸根結底是一個輸出字元串(HTML CSS JS等混合的字元串)的過程。現在流行的Web開發方式,包括Asp(.net), Jsp, Php 等等,在頁面上,都是在輸出HTML字元串的過程中,嵌入伺服器代碼。或者了解成相反的過程, 不管如何了解, 頁面中總是需要在輸出字元串和其它服務端代碼兩者中間不斷的進行切換。
傳統的切換是通過<%%>之類的成對标記辨別的。 Razor引擎不再使用之麼複雜的标記, 而是使用一個@來辨別這種切換。
我們暫時将直接輸出HTML CSS JS等字元串的模式稱為HTML模式,将執行伺服器代碼的模式稱為C#模式,請看下圖:
從HTML模式進入C#的模式,總是以@開始, 後面沒有跟{}時,Razor會自動判斷何時傳回Html模式。沒有{}的C#模式一般都比較短暫,碰到HTML标記就結束了。
而有{}時,大括号之中會進入以c#為預設模式的環境中。比如:
這段代碼在浏覽器中的結果:
上面的代碼,注釋中說明了兩種模式切換的情況,同時展示了是否進行HTML編碼輸出字元串的功能。
Razor的精髓便是預設模式與模式的切換 。 在輸出有困難的時候,可以通過{}和一些系統提供的或自定義的C#方法來明确的控制這種切換。
除了這一切換原理,Razor還有些小的特性,比如
2)在JS或CSS中使用@與稍有困難
3)<a>标記中的href屬性,使用”~/”,Razor會自動将其轉換成絕對路徑
4) 很多情況下,初學者會錯誤的多輸出;符号。比如将 @Html.Raw(“…”) 寫成 @Html.Raw(“…”); 後面的;是多餘的,會錯誤的呈現在頁面上。
還有一些其它的,在使用中慢慢體會吧。
像HtmlHelper(即@Html)、URLHelper(@Url)等其中 有很多常用的方法。
比如Url.Content(“~/Controller/Action…”)會轉換成絕對路徑。
雖然看上去有點複雜,但是稍加熟悉後感覺真是比原來的<%%>輕松多了。
是以,我們愛Razor.