ActionLink
@Html.ActionLink("生成一個a標記", "Two", new { id = 1 }, new { @class = "class" })
ActionLink 函數可以生成一個<a><a/>標記
第一個參數爲:<a>生成一個a標記<a/>
第二個參數爲:<a href="Two">生成一個a標記<a/>
第三個參數爲:<a href="Two?id=1">生成一個a標記<a/>
第四個參數爲:<a href="Two?id=1" class="class">生成一個a標記<a/>
AntiForgeryToken
頁面代碼:
@using (Html.BeginForm("Two", "Default", new { id=1}, FormMethod.Post, null))
{
@Html.AntiForgeryToken()
<input id="Submit1" type="submit" value="提交" />
}
Controller中代碼:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Two(int id)
{
ViewBag.Title = "Post提交的Two";
return View();
}
用了AntiForgeryToken的提交方式,可以避免CSRF/XSRF攻擊(這裏就不詳細說明了,以後會寫的),前提是必須要用post提交方式(提交過去的時候無論傳過去的是string還是int都能跳轉,不知道爲什麼。網上看見有用jQuery寫的,試了一下不知道爲什麼不好使。)
AttributeEncode和Encode
@Html.AttributeEncode("a b")
@Html.Encode("c d")
先來看一下微軟官方給的註釋:
AttributeEncode:
AntiForgeryToken 方法會將引號 (“)、與號 (&) 和左尖括號 (<) 轉換爲等效的字符實體。
結果應只用於雙引號中的特性。 如果使用 AntiForgeryToken 方法對單引號中的特性進行編碼,則可能會出現安全問題。
Encode:
如果將空格和標點符號等字符傳入 HTTP 流中,則可能會在處理這些字符時錯誤地解釋這些字符。 URL 編碼會將 URL 中不允許的字符轉換成字符實體等效項。 例如,當字符 < 和 > 嵌入到要在 URL 中傳輸的文本塊中時,這兩個字符將編碼爲 %3c 和 %3e。
上面是微軟給的注意事項,我感覺這就是一個把object或string類型的數據轉換爲在html上顯示的東西,能增強安全性(反正微軟是這麼說的),弊端就是無論用哪一個,都需要程序員認真檢查一下編譯之後的東西,否則會很鬧心