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 从网上下 ...
随机推荐
- Nodejs的运行原理-架构篇
前言 本来是想只做一个Nodejs运行原理-科普篇,但是收到了不少私信,要我多分享一些更进阶,更详细的内容,所以我会在接下来的两个月里继续更新Nodejs运行原理. PS:此系列只做Nodejs的运行 ...
- Java中堆与栈
简单的说:Java把内存划分成两种:一种是栈内存,一种是堆内存. 1:什么是堆内存: 堆内存是是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或者创建一个数组的时 ...
- ajax调用数据案例,二级联动
题目:请针对移动端web浏览器制作一个结账数据信息展示页面 要求: 1. 页面样式除不使用表格呈现外,可自由选择其他呈现方式 2. 需符合移动端操作习惯 3. 可根据服务区.门店查询结账信息 4. 可 ...
- sql存储过程中使用 output
1.sql存储过程中使用 output CREATE PROCEDURE [dbo].[P_Max] @a int, -- 输入 @b int, -- 输入 @Returnc int output - ...
- 在IIS使用localDB
项目使用localdb来作为本机测试数据库,发布到本机IIS后项目却链接不到数据库,查看windows日志为如下错误 "无法获取本地应用程序数据路径.很可能是因为未加载用户配置文件.如果在 ...
- (五):C++分布式实时应用框架——微服务架构的演进
C++分布式实时应用框架--微服务架构的演进 上一篇:(四):C++分布式实时应用框架--状态中心模块 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律 ...
- C#winform程序关闭计算机的正确姿势
/// <summary> /// 计算机电源控制类 /// </summary> public class EnvironmentCheckClass { [DllImpor ...
- 对《cookie之困》的一些总结与思考
0x00 前言 早些时候在gayhub翻安全大会的paper,翻到了kcon的一些paper. https://github.com/knownsec/KCon 从前辈们的paper中学到了不少,也产 ...
- Python模块学习---Web
import urlparse url = urlparse.urlparse("http://www.python.org/doc/FAQ.html") print url pr ...
- 【后缀数组】洛谷P3809模板题
题目背景 这是一道模板题. 题目描述 读入一个长度为 n n n 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置. ...