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