淺談MVC Razor基本語法


首先說下MVC,mvc已經不用ViewState來保留網頁的狀態,所以大部分依賴ViewState的功能都將無法使用, 比如gridview的分頁與排序,page trace等利用viewstate記錄狀態的功能將全部失效,另外的大改變就是 asp.net mvc已經沒有頁面生命周期也沒有事件驅動.

       Razor語法是在MVC3.0引入的全新的c#語法,取而代之<%...%>語法.用在mvc的view頁面.

首先談一下razor語法的基本用法:

1.如果在頁面輸出單一變量時,只要在c#語句之前加上@符號即可,范例如下:

<p>

現在時刻:@DateTime.Now

</p>

2、在頁面中輸出一段含有空白子元或運算子的結果時,必須在前后加上一個小括弧,范例如下:

<p>

會員名稱:@(User.Identity.Name+Model.MemberLevel)

啟用狀態:@(View.IsEnabled?"啟用":"停用")

</p>

3、在頁面中執行多行c#代碼時,必須在前后加上一個大括弧,語法范例如下:

@{

var name="Daniel";

var message="你好"+name;

}

}

注意上述屬於一個c#代碼片段,在撰寫代碼時必須符合c#語言規范,也就是每段句都要由分號結尾.

4、如果要在多行c#代碼的Razor語法中插入html或其他文字內容,必須在每一行最前面加上"@:"符號,而且加上"@:"符號的這行代碼里,也可以加上其他Razor變量,如下范例:

@

{

var name="Daniel";

@:你好",我是 @name

}

當然也可以用如下加上一堆html標簽,Razor語法會自動識別

@

{

var name="Daniel";

<span>你好,我是</span> @name

}

或者使用Razor語法中的<text>標簽

@

{

var name="Daniel";

<text>你好,我是</text> @name

}

5、如果要在Razor頁面中輸出“@”符號,可以在“@”符號前再加一@,如下:

@@Daniel,輸出為@Daniel

6、屬性名稱誤判

當你想輸出以下內容時 --

你好,@ViewBag.Name先生。

會造成Razor把Name先生當做viewBag的屬性了,解決辦法有幾種

  1. 你好,@(ViewBag.Name)先生;
  2. 你好,@ViewBag.Name<span>先生</span>
  3. 你好,<span>@ViewBag.Name</span>先生

7、輸出一段可以解析的html

當我們定義如下

@{

ViewBag.Description="<span style='font-weight:bold;'>描述文字</span>";

}

@ViewBag.Description

結果為<span style='font-weight:bold;'>描述文字</span>,如果想輸出html解析后的描述文字,那么可以使用 html輔助方法Html.Raw(ViewBag.Description)

      如果我們要將以下中的“System.web.MVc”變成一個Razor變量,

      類別是 System.Web.Mvc.Controller

也許你可能會寫成以下語法,但是輸出結果不是期望的;輸出結果為“類別是@ViewBag.MvcNamespace.Controller”

@{
    ViewBag.MvcNamespace = "System.Web.Mvc";
}

類別是@ViewBag.MvcNamespace.Controller

      為了達到輸出結果可以改成以下方式類別是@(ViewBag.MvcNamespace).Controller,輸出結果為“類別是System.Web.Mvc.Controller”

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM