这一篇,我们详细讲讲 .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
等,我们就先不介绍了,等用到的时候再查文档即可。