首页 > 代码库 > HtmlHelper总结

HtmlHelper总结

 

  HTML helper是在视图页面上操作HTML元素时可以调用的方法,还包括URL helper和AJAX helper。这些帮助方法都为了使得操作HTML更加容易。分为两类:a.编辑和输入帮助类b.显示和渲染帮助类。

1实质

   Razor视图继承了基类的HTML属性。HTML属性的类型是HtmlHelper<T>,T代表了传递给视图的模型类型。大多是的辅助方法都是扩展方法。

 

2自动实现HTML编码

    如@Html.TextArea("text", "hello <br/> world") 对应的HTML代码

       <textarea cols="20" id="text" name="text" rows="2">hello &lt;br /&gt; world</textarea>

 

 

3几乎所有的helper方法都可以添加一个控制HTML属性的参数

   参数类型是IDictionary<string,object>,用来创建HTML控件的属性,在需要的情况下可以创建许多的属性。如:@using (Html.BeginForm("Search", "Home", FormMethod.Get, new { target = "_blank" })){}

但是需要注意的是:1)当设置css class=""时 由于class是关键字需要 写作@class=""

                 2)当属性名字中含"-"时,由于c#中命名不能含有"-",所以要写成"_",帮助方法可以自动转换

4 Html.ValidationSummary

    汇总显示ModelState Dictionary中的信息。通过后台可以添加关于实体或者实体属性的错误消息:

        1)ModelState.AddModelError("", "This is all wrong!");         //当有错误产生时(即使是一个属性)就会显示

2)ModelState.AddModelError("Title", "What a terrible name!");    //为属性Title添加错误消息

    与其相似的@Html.ValidationMessageFor(model => model.Nickname) 一般跟在一个需要填写的属性后面。

5强类型Helper

    通过强类型Helper可以传递一个Lambda表达式来指定要呈现的实体属性。表达式的实体类型由View()传递过来,在视图中用@model指令 指定  类型。强类型Helper在原有Helper基础上加了一个"For"后缀。

     强类型Helper的好处:1)有智能提示

                        2)便于重构(在model 中更改了属性名称时,时用了强类型helper的Html可以进行自动更改)

6 Helper和Model Metadata(元数据)

  帮助类不仅仅能够自动探测到ViewData的数据,还可以从元数据获益。如:@Html.Label("GenreId") 与之对应的HTLML代码是: <label     for="GenreId">Genre</label>。Genre元数据的定义:

                                  [DisplayName("Genre")]

                                  public int GenreId { get; set; }    

     可见HTML中的Genre就是从元数据的[DisplayName("Genre")]来的。

7 模板辅助方法

      主要有两个:Html.Display 和 Html.Editor(对应的强类型方法Html.DisplayFor 和 Html.EditorFor)。好处是可以通过数据注解来改变生成的HTML。

    如:当模型的Title属性含[DataType(DataType.MultilineText)]注解时,当使用@Html.EditorFor(m=>m.Title) 时,会自动生成textarea控件。

    还有Html.DisplayForModel 和 Html.EditorForModel也是模板辅助方法。

8.列举大部分的辅助方法

      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