一、單行代碼書寫javascript
@代碼java
二、多行代碼書寫算法
@{ //@加個大括號就能夠在裏面寫C#代碼了。瀏覽器
C#代碼第一行xss
C#代碼第二行編碼
} spa
三、Razor模板引擎會自動判別代碼塊,可是當代碼存在二義性的時候,能夠用小括號澄清code
@{ string name = "張三"; } // @name你好 報錯當前上下文中不存在名稱"name你好"*@ @(name)你好
再給一個例子,就是調用泛型方法的時候,尖括號會致使Razor轉回標記,這個時候也能夠用小括號澄清:對象
@(Html.SomeMethod<Type>())
對於郵件名而言,Razor採用了一個簡單的算法來判別,能夠適應大多數狀況,當出現Razor判別不出的時候,能夠用兩個@號,@@來強制輸出@號。blog
四、HTML編碼
默認輸出的內容都是通過HTML編碼的,這對防止xss攻擊有必定做用,可是若是我想將一段代碼,就好比javascript代碼輸出到前臺,這時候要用
@Html.Raw(content) 來保證內容不被編碼
@{ string message = "<script>alert('你好!');</script>"; } <span>@message</span> //實際輸出都瀏覽器的源碼 <span><script>alert('你好!');</script></span> <span>@Html.Raw(@message)</span> //實際輸出到瀏覽器的源碼 <script>alert('你好!');</script>
五、混合代碼與純文本
若是想在代碼塊裏向瀏覽器輸出一段內容,這時候就要用到
@:想輸出的文本 //單行
<text>想輸出的文本</text> //能夠寫成多行
並且<text></text>還能夠不寫在@{}代碼塊了,可是@:必須寫在代碼塊了,推薦使用<text></text>
@{
var i = 1;
@:@i; //用於輸出變量
}
六、MVC調用後臺方法
controller代碼:
public class HomeController : Controller { public ActionResult Index() { ViewData["kk"] = "長江啊長江,你特別的長!"; return View("list"); } public static string GetName() { return "劉德華"; }
public string GetName1() { return "張學友"; }
}
View代碼:
@MvcStart.Controllers.HomeController.GetName(); //靜態方法的調用
@{ //非靜態方法的調用
var con = new MvcStart.Controllers.HomeController();
var name1 = con.GetName1();
}
@name1
注意,上面是靜態的方法,靜態的代碼最簡單,直接@寫上命名空間等等就能夠了。而靜態方法只能寫成多行,經過new一個對象來引用。
@Url.Action("index") 此方法用於返回一個Action路徑,當須要Action路徑的時候能夠用到,好比javascript的src是由程序生成的等等。