这一篇,我们详细讲讲 .Net MVC 中的 HTML Helper。
HtmlHelper 类使用模型类对象生成 html 元素。它将模型对象绑定到 html 元素,以将模型属性的值显示为 html 元素,并在提交 Web 表单时将 html 元素的值分配给模型属性。
我们最好在 Razor 视图中使用 HtmlHelper 类而不是手动编写 html 标签。
我们使用 @Html 来表示一个 HtmlHelper 对象。
HtmlHelper 类生成 html 元素。如: 
@Html.ActionLink("Create New", "Create")
 
  | 
 
将生成标记: 
<a href="/Foo/Create">Create New</a>
 
  | 
 
HtmlHelper 扩展方法
调用 HtmlHelper 扩展方法和使用 html 标记之间的区别在于: HtmlHelper 扩展方法可以使绑定模型数据变得容易。
TextBox
我们有两个生成 textbox(<input type=”text” />)的方法: 
- TextBox(),松散类型
 
- TextBoxFor(),强类型
 
TextBox()
方法签名: 
MvcHtmlString Html.TextBox(string name, string value, object htmlAttributes)
 
  | 
 
注意: TextBox() 方法有很多重载,并且 TextBox() 方法是松散类型,因为 name 属性是字符串类型。
使用: 
@model Student @Html.TextBox("StudentName", null, new { @class = "form-control" })
 
  | 
 
生成的 html 元素如下: 
<input class="form-control"          id="StudentName"          name="StudentName"          type="text"          value="" />
 
  | 
 
注意: 第一个参数是字符串,它将被设置为 input 元素的 name 和 id 属性,第二个参数是要在文本框中显示的值,第三个参数是 HtmlAttributes 参数,属性名称将是以 @ 符号开头的属性。
TextBoxFor()
方法签名: 
MvcHtmlString TextBoxFor(Expression<Func<TModel, TValue>> expression, object htmlAttributes)
 
  | 
 
使用: 
@model Student @Html.TextBoxFor(m => m.StudentName, new { @class = "form-control" }) 
 
  | 
 
生成的 html 元素如下: 
<input class="form-control"          id="StudentName"          name="StudentName"          type="text"          value="1ess" />
 
  | 
 
TextArea
TextArea() 方法和 TextAreaFor() 方法与 TextBox() 方法以及 TextBoxFor() 方法类似,我们就不多说了。
CheckBox
我们有两个生成 checkbox(<input type=”checkbox” />)的方法: 
- CheckBox(),松散类型
 
- CheckBoxFor(),强类型
 
CheckBox()
方法签名: 
MvcHtmlString CheckBox(string name, bool isChecked, object htmlAttributes)
 
  | 
 
使用: 
@Html.CheckBox("isNewlyEnrolled", true)
 
  | 
 
生成的 html 元素如下: 
<input checked="checked"          id="isNewlyEnrolled"          name="isNewlyEnrolled"          type="checkbox"          value="true" />
 
  | 
 
CheckBoxFor()
方法签名: 
MvcHtmlString CheckBoxFor(<Expression<Func<TModel,TValue>> expression, object htmlAttributes)
 
  | 
 
使用: 
@model Student @Html.CheckBoxFor(m => m.isNewlyEnrolled)
 
  | 
 
生成的 html 元素如下: 
<input data-val="true"          data-val-required="The isNewlyEnrolled field is required."          id="isNewlyEnrolled"          name="isNewlyEnrolled"          type="checkbox"          value="true" />
  <input name="isNewlyEnrolled" type="hidden" value="false" />
 
  | 
 
我们有两个生成 radio(<input type=”radio” />)的方法: 
- RadioButton(),松散类型
 
- RadioButtonFor(),强类型
 
方法签名: 
MvcHtmlString RadioButton(string name, object value, bool isChecked, object htmlAttributes) 
 
  | 
 
使用: 
Male:   @Html.RadioButton("Gender", "Male")   Female: @Html.RadioButton("Gender", "Female")  
 
  | 
 
生成的 html 元素如下: 
Male: <input checked="checked"          id="Gender"          name="Gender"          type="radio"          value="Male" />
  Female: <input id="Gender"          name="Gender"          type="radio"          value="Female" />
 
  | 
 
方法签名: 
MvcHtmlString RadioButtonFor(<Expression<Func<TModel, TValue>> expression, object value, object htmlAttributes) 
 
  | 
 
使用: 
@model Student @Html.RadioButtonFor(m => m.Gender, "Male") @Html.RadioButtonFor(m => m.Gender, "Female")
 
  | 
 
生成的 html 元素如下: 
Male: <input checked="checked"          id="Gender"          name="Gender"          type="radio"          value="Male" />
  Female: <input id="Gender"          name="Gender"          type="radio"          value="Female" />
 
  | 
 
DropDownList
我们有两个生成 select 元素的方法: 
- DropDownList(),松散类型
 
- DropDownListFor(),强类型
 
DropDownList()
方法签名: 
MvcHtmlString Html.DropDownList(string name, IEnumerable<SelectLestItem> selectList, string optionLabel, object htmlAttributes)
 
  | 
 
使用: 
@using MyMVCApp.Models @model Student @Html.DropDownList("StudentGender",                      new SelectList(Enum.GetValues(typeof(Gender))),                     "Select Gender",                     new { @class = "form-control" })
 
  | 
 
生成的 html 元素如下: 
<select class="form-control" id="StudentGender" name="StudentGender">     <option>Select Gender</option>      <option>Male</option>      <option>Female</option>  </select>
 
  | 
 
DropDownListFor()
方法签名: 
MvcHtmlString Html.DropDownListFor(Expression<Func<dynamic, TProperty>> expression, IEnumerable<SelectLestItem> selectList, string optionLabel, object htmlAttributes)
 
  | 
 
使用: 
@using MyMVCApp.Models @model Student @Html.DropDownListFor(m => m.StudentGender,                      new SelectList(Enum.GetValues(typeof(Gender))),                      "Select Gender")
 
  | 
 
生成的 html 元素如下: 
<select class="form-control" id="StudentGender" name="StudentGender">     <option>Select Gender</option>      <option>Male</option>      <option>Female</option>  </select>
 
  | 
 
其他
还有一些扩展方法如: 
- Password
 
- Display
 
- Label
 
- Editor
 
- Hidden
 
等,我们就先不介绍了,等用到的时候再查文档即可。