目錄:
Razor是基於服務端代碼轉換成網頁的標記語法。語法主要包括Razor標記、C#和HTML組成。包含Razor語法的主要文件是.cshtml。
Razor的默認語言是HTML,從Razor渲染成一個HTML跟直接的一個HTML沒什麼區別,Razor包含如下代碼:
<p>我是中國人</p>
服務器渲染後還是<p>我是中國人</p>,沒啥區別。
Razor支持C#,並通過使用 @ 符號從HTML切換到C#,並運算C#表達式並將之渲染為HTML輸出。Razor能通過指定的標記從HTML切換到C#,當 @ 符號後面緊跟一個Razor保留字,則將切換為Razor特定標記,不然的話切換到成普通的C#。
如果HTML中需要包含 @ 的話,需要用@@符號進行轉義。
<p>@@Email</p>
渲染後:
<p>@Email</p>
這樣就不會因為HTML特性和內容中包含郵件地址@符號,而勿將@符號處理為轉義字符。
隱式Razor表達式起於"@"符號,後面緊跟C#代碼,比如:
<h2>@DateTime.Now</h2>
注意:隱式表達式都不能包含空格。否則分析器會報如下錯誤:
在 "@" 字符後面遇到了空格或換行符。只有有效的標識符、關鍵字、注釋、"(" 和 "{" 在代碼塊開頭才有效,並且它們必須緊跟在 "@" 後面,中間沒有空格。
顯式表達式包含一對括號的 @ 符號,比如在頁面上渲染上周的時間:
<h2>@(DateTime.Now-TimeSpan.FromDays(7))</h2>
任何在 @() 內的內容都會被運算並渲染輸出,同時也不能包含空格。比如如下代碼:
<h2>@DateTime.Now-TimeSpan.FromDays(7)</h2>
渲染後:
2016/10/24 22:39:49-TimeSpan.FromDays(7)
同時也可以使用@{}顯示表達式結果中把這點連接起來:
@{ var swich = new Person("Swich", 27);
}
<h2>@(swich.Age)</h2>
如果寫成@(swich.Age)這種非顯示表達式,那麼它會當做郵件地址來處理渲染成為<h2>@swich.Age</h2>。當為顯式表達式時,將渲染為<h2>27</h2>。