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 <br /> 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总结的更多相关文章
- mvc4 自定义HtmlHelper
好久没写博客了,最近只看博客不写的习惯很不好啊. 好了,最近的项目中大量的用到了表单,很多表单有特殊的编写,但是在该项目中又有很多重复的地方,这个时候若能封装成htmlhelper将大大降低工作量的. ...
- C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)
前言:之前的两篇封装了一些基础的表单组件,这篇继续来封装几个基于bootstrap的其他组件.和上篇不同的是,这篇的有几个组件需要某些js文件的支持. 本文原创地址:http://www.cnblog ...
- C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper
前言:之前学习过很多的Bootstrap组件,博主就在脑海里构思:是否可以封装一套自己Bootstrap组件库呢.再加上看到MVC的Razor语法里面直接通过后台方法输出前端控件的方式,于是打算仿照H ...
- Mvc HtmlHelper 方法扩展 DropDownListFor
项目中遇到表单提交中遇到枚举,忽然想起1年前的1小段代码结合HtmlHelper在扩展一下 便于开发中使用 public static class HtmlHelperExtensions { p ...
- 在mvc里面有htmlhelper方法,在webform里面有什么?
终于是找到原来在webform里面已经提供了htmlcontrol这样的控件,可以直接拿来用.以前一直在想mvc有htmlhelper,webform里面不能用,其实是webform里面已经有了. 例 ...
- ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法
一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归. ...
- ASP.NET MVC 之自定义HtmlHelper
前言 HtmlHelper方法为我们提供很多html标签,只需在页面调用就行了,但是微软并没有把所有的html标签都对应有了扩展方法,需要我们重新自定义HtmlHelper,来满足我们需要. 方法 如 ...
- ASP.NET MVC HtmlHelper之Html.ActionLink
前言 ActionLink用于生成超链接,方法用于指向Controller的Action. 扩展方法与参数说明 ActionLink扩展方法如下: public static MvcHtmlStrin ...
- HtmlHelper拓展实现CheckBoxList
经过一番折腾(主要是SelectList这个类操作有些繁琐)实现了CheckBoxList,过程RadioList基本一样 拓展方法 public static MvcHtmlString Check ...
- HtmlHelper拓展实现RadioList
mvc中HtmlHelper可以帮助我们生成许多Html控件,但是没有类似DropDownList的RadioList,但是发现这些方法都是拓展方法,于是就想自己也拓展一个RadioList 从网上下 ...
随机推荐
- mysql 的 fiter push down 优化
出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该声明. ...
- 《吸血鬼日记》(The Vampire Diaries)经典台词
Best quotes from The Vampire Diary 1. I will start fresh, be someone new. 1.我要重新开始,做不一样的自己. 2. It’s ...
- 在macOS上通过pyenv安装和切换多版本Python
1. 安装homebrew 官网 http://brew.sh/index_zh-cn.html 打开终端,在终端中粘贴如下脚本 /usr/bin/ruby -e "$(curl -fsSL ...
- JS通过decodeURIComponent函数解码
在我们调用后台接口的时候,如果后端传过来的字段是编码过的,那需要使用decodeURIComponent函数进行解码显示 var test1="http://www.jianshu.com/ ...
- Python爬虫知识点一
一.入门知识: 1.1.HTTP简介HTTP = HyperText Transfer ProtocolURI = Uniform Resource IdentifierURL = Uniform R ...
- linux下的磁盘挂载
将新的磁盘安装在服务器上后,怎么挂载到现在的服务器上呢? 1.查询是否已经分配磁盘 fdisk -l 这里因为测试,只是挂载了10G的硬盘 2.发现有磁盘/dev/sdb.然后使用fdisk命令建立分 ...
- Web程序员必备的CSS工具
对于web开发来说,CSS是最有效的美化页面.设置页面布局的技术.但问题是,CSS是一种标记性语言,语法结构非常的松散.不严谨.WEB程序员会经常发现自己的或别人的CSS文件里有大量的冗余代码或错误或 ...
- 从Unity中的Attribute到AOP(六)
本文将重点对Unity剩下常用的Attribute进行讲解,其他不常用的Attribute各位可以自行去官方文档查阅. 首先是UnityEngine命名空间下的. ColorUsage,这个主要作用于 ...
- Nginx常用功能(5)
一.反向代理 1.多域名跳转(location) server www.test.com location / { proxy_pass http://192.168.100.100:8080/web ...
- MyBatis + MySQL返回插入的主键id
这是最近在实现perfect-ssm中的一个功能时碰到的一个小问题,觉得需要记录一下,向MySQL数据库中插入一条记录后,需要获取此条记录的id值,以生成对应的key值存入到redis中,id为自增i ...