MVC4 razor與aspx的區別以及用法1,2

量子物理學發表於2016-03-17
Model要重,Controller要輕,View要夠笨,mvc不希望在開發view時還需要判斷過多的與view無關的技術,所以要儘可能的保持view邏輯簡單。(以下中有出現程式碼的地方用了什麼尖括號百分號標籤這些字樣是為了防止儲存時被新浪部落格給處理掉)

如果view選擇aspx字尾的話
頁面上都會出現很多夾雜後臺程式碼與html的情況,而先前使用的“<尖括號%百分號%尖括號>”這種古老表示法會讓html標籤與.net程式碼區塊混雜在一起,這樣當頁面變的複雜時,混合類程式碼的可讀性就大大降低。

在mvc3之後view就引入了Razor語法,用俗稱的小老鼠“@”符號來代表程式碼片段,搭配vs的語法高亮顯示,razor語法也讓整個view頁面內的html標籤與伺服器程式碼結合的相當漂亮。
在mvc2.5當中如果要在頁面上顯示當前時間:
<尖括號%: DateTime.Now%百分號>

若使用razor語法,則是
@DateTime.Now

Razor並不是一個程式碼語言,只是一種用在view頁面的程式碼區塊撰寫風格。
如果是c#來編寫razor頁面,字尾是cshtml
如果是vb.net來編寫,字尾則是vbhtml

1,Razor基本語法
在頁面上輸出單一變數時,只要在c#語句前加上@符號
eg :
<標籤>
現在時間:@DateTime.Now
</標籤>
注意:在輸出單一變數時不需要加上分號結尾,但是如果再頁面中輸出一段空白子元或者運運算元的結果時,則需要在前後加上一個小括號
eg:
<標籤>
會員名稱:@(user.Identity.Name+Model.MemberLevel)
狀態:@(ViewBag.IsEnabled?"啟用":“停用”)
</標籤>

在頁面上執行多行程式碼時,必須在前後加上一個大括號
eg
@
{
var a=1;
var b="aaa";
}
注意:@{}之間屬於一個c#程式碼區段,在撰寫程式碼時必須符合c#語言規範,也就是必須分號結尾。
如果要在多行後臺程式碼的razor語法中插入html或者其他內容,必須在每一行最前面加上一個"@:"符號,在這個符號的這行程式碼裡,也可以再加上其他razor變數
eg:
@
{
var name="aa";
@:您好, 我是@name
}

razar檢視頁面中表示註釋,用“@*”與“*@”來當註釋頭尾,就不寫範例了。
如果要在razor頁面輸出“@”符號,可以用@符號作為跳脫子元,比如@@aaa,輸出@aaa

2,razor與html混合輸出
if語句範例
@if(ViewBag.IsEnabled){
@:啟用
}else{
@:停用
}
如果再if與else程式碼區塊裡放置大量的html標籤,每行前面都要加"@:"有點麻煩,只要在程式碼區塊的前後加上一組html標籤就可以,(純文字在razor的程式碼裡會自動被視為c#語句,所以必須加標籤)
@if(ViewBag.IsEnabled){
<標籤>啟用</標籤>
}else{
<標籤>停用</標籤>
}

vs工具中的高亮提示,razor中c#程式碼是顯示淡藍色,如果是白底色的話就代表是razor意外的純文字,razor會很智慧的自動辨別是c#還是html,但是如果我們不想在這個區段出現任何的標籤怎麼辦呢,在razor中使用特殊的<標籤text>來代替這個html標籤,最後輸出到瀏覽器時就不會出現text標籤,當然也可以在多行c#程式碼區段使用"@:" 或者text作為HTML與razor語法之間的切換

相關文章