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

HtmlHelper总结的更多相关文章

  1. mvc4 自定义HtmlHelper

    好久没写博客了,最近只看博客不写的习惯很不好啊. 好了,最近的项目中大量的用到了表单,很多表单有特殊的编写,但是在该项目中又有很多重复的地方,这个时候若能封装成htmlhelper将大大降低工作量的. ...

  2. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)

    前言:之前的两篇封装了一些基础的表单组件,这篇继续来封装几个基于bootstrap的其他组件.和上篇不同的是,这篇的有几个组件需要某些js文件的支持. 本文原创地址:http://www.cnblog ...

  3. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper

    前言:之前学习过很多的Bootstrap组件,博主就在脑海里构思:是否可以封装一套自己Bootstrap组件库呢.再加上看到MVC的Razor语法里面直接通过后台方法输出前端控件的方式,于是打算仿照H ...

  4. Mvc HtmlHelper 方法扩展 DropDownListFor

      项目中遇到表单提交中遇到枚举,忽然想起1年前的1小段代码结合HtmlHelper在扩展一下 便于开发中使用 public static class HtmlHelperExtensions { p ...

  5. 在mvc里面有htmlhelper方法,在webform里面有什么?

    终于是找到原来在webform里面已经提供了htmlcontrol这样的控件,可以直接拿来用.以前一直在想mvc有htmlhelper,webform里面不能用,其实是webform里面已经有了. 例 ...

  6. ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法

    一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归. ...

  7. ASP.NET MVC 之自定义HtmlHelper

    前言 HtmlHelper方法为我们提供很多html标签,只需在页面调用就行了,但是微软并没有把所有的html标签都对应有了扩展方法,需要我们重新自定义HtmlHelper,来满足我们需要. 方法 如 ...

  8. ASP.NET MVC HtmlHelper之Html.ActionLink

    前言 ActionLink用于生成超链接,方法用于指向Controller的Action. 扩展方法与参数说明 ActionLink扩展方法如下: public static MvcHtmlStrin ...

  9. HtmlHelper拓展实现CheckBoxList

    经过一番折腾(主要是SelectList这个类操作有些繁琐)实现了CheckBoxList,过程RadioList基本一样 拓展方法 public static MvcHtmlString Check ...

  10. HtmlHelper拓展实现RadioList

    mvc中HtmlHelper可以帮助我们生成许多Html控件,但是没有类似DropDownList的RadioList,但是发现这些方法都是拓展方法,于是就想自己也拓展一个RadioList 从网上下 ...

随机推荐

  1. mysql 的 fiter push down 优化

    出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该声明. ...

  2. 《吸血鬼日记》(The Vampire Diaries)经典台词

    Best quotes from The Vampire Diary 1. I will start fresh, be someone new. 1.我要重新开始,做不一样的自己. 2. It’s ...

  3. 在macOS上通过pyenv安装和切换多版本Python

    1. 安装homebrew 官网 http://brew.sh/index_zh-cn.html 打开终端,在终端中粘贴如下脚本 /usr/bin/ruby -e "$(curl -fsSL ...

  4. JS通过decodeURIComponent函数解码

    在我们调用后台接口的时候,如果后端传过来的字段是编码过的,那需要使用decodeURIComponent函数进行解码显示 var test1="http://www.jianshu.com/ ...

  5. Python爬虫知识点一

    一.入门知识: 1.1.HTTP简介HTTP = HyperText Transfer ProtocolURI = Uniform Resource IdentifierURL = Uniform R ...

  6. linux下的磁盘挂载

    将新的磁盘安装在服务器上后,怎么挂载到现在的服务器上呢? 1.查询是否已经分配磁盘 fdisk -l 这里因为测试,只是挂载了10G的硬盘 2.发现有磁盘/dev/sdb.然后使用fdisk命令建立分 ...

  7. Web程序员必备的CSS工具

    对于web开发来说,CSS是最有效的美化页面.设置页面布局的技术.但问题是,CSS是一种标记性语言,语法结构非常的松散.不严谨.WEB程序员会经常发现自己的或别人的CSS文件里有大量的冗余代码或错误或 ...

  8. 从Unity中的Attribute到AOP(六)

    本文将重点对Unity剩下常用的Attribute进行讲解,其他不常用的Attribute各位可以自行去官方文档查阅. 首先是UnityEngine命名空间下的. ColorUsage,这个主要作用于 ...

  9. Nginx常用功能(5)

    一.反向代理 1.多域名跳转(location) server www.test.com location / { proxy_pass http://192.168.100.100:8080/web ...

  10. MyBatis + MySQL返回插入的主键id

    这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增i ...