HTML helper是在視圖頁面上操做HTML元素時能夠調用的方法,還包括URL helper和AJAX helper。這些幫助方法都爲了使得操做HTML更加容易。分爲兩類:a.編輯和輸入幫助類b.顯示和渲染幫助類。 css
Razor視圖繼承了基類的HTML屬性。HTML屬性的類型是HtmlHelper<T>,T表明了傳遞給視圖的模型類型。大可能是的輔助方法都是擴展方法。c#
如@Html.TextArea("text", "hello <br/> world") 對應的HTML代碼 編碼
<textarea cols="20" id="text" name="text" rows="2">hello <br /> world</textarea>spa
參數類型是IDictionary<string,object>,用來建立HTML控件的屬性,在須要的狀況下能夠建立許多的屬性。如:@using (Html.BeginForm("Search", "Home", FormMethod.Get, new { target = "_blank" })){}orm
可是須要注意的是:1)當設置css class=""時 因爲class是關鍵字須要 寫做@class="" 繼承
2)當屬性名字中含"-"時,因爲c#中命名不能含有"-",因此要寫成"_",幫助方法能夠自動轉換get
彙總顯示ModelState Dictionary中的信息。經過後臺能夠添加關於實體或者實體屬性的錯誤消息: string
1)ModelState.AddModelError("", "This is all wrong!"); //當有錯誤產生時(即便是一個屬性)就會顯示 it
2)ModelState.AddModelError("Title", "What a terrible name!"); //爲屬性Title添加錯誤消息 io
與其類似的@Html.ValidationMessageFor(model => model.Nickname) 通常跟在一個須要填寫的屬性後面。
經過強類型Helper能夠傳遞一個Lambda表達式來指定要呈現的實體屬性。表達式的實體類型由View()傳遞過來,在視圖中用@model指令 指定 類型。強類型Helper在原有Helper基礎上加了一個"For"後綴。
強類型Helper的好處:1)有智能提示
2)便於重構(在model 中更改了屬性名稱時,時用了強類型helper的Html能夠進行自動更改)
幫助類不單單可以自動探測到ViewData的數據,還能夠從元數據獲益。如:@Html.Label("GenreId") 與之對應的HTLML代碼是: <label for="GenreId">Genre</label>。Genre元數據的定義:
[DisplayName("Genre")]
public int GenreId { get; set; }
可見HTML中的Genre就是從元數據的[DisplayName("Genre")]來的。
主要有兩個:Html.Display 和 Html.Editor(對應的強類型方法Html.DisplayFor 和 Html.EditorFor)。好處是能夠經過數據註解來改變生成的HTML。
如:當模型的Title屬性含[DataType(DataType.MultilineText)]註解時,當使用@Html.EditorFor(m=>m.Title) 時,會自動生成textarea控件。
還有Html.DisplayForModel 和 Html.EditorForModel也是模板輔助方法。
a.輸入編輯類
TextBox(TextArea) DropDownList(ListBox—可選擇多項) Label Hidden Password RadioButton CheckBox
b.顯示和渲染類
1)ActionLink RouteLink
2)URL輔助方法
@Url.Action(顯示URL,不是連接) @Url.Content(將程序相對路徑轉換爲絕對路徑)
3)Html.Partial和Html.RenderPartial
4)Html.Action和Html.RenderAction