HtmlHelper类

public class HtmlHelper<TModel> : HtmlHelper类

因为HtmlHelper<TModel>继承自HtmlHelper,所以HtmlHelper<TModel>的对象,两者的扩展方法都可以使用.

在View页面中使用的Html,是 public abstract class WebViewPage<TModel> : WebViewPage中的一个属性,类型是HtmlHelper<TModel>.可以使用所有的这些扩展的方法

HtmlHelper<TModel> :对HtmlHelper的继承,主要是通过通过ViewDataDictionary<TModel>对ViewDataDictionary的继承实现的.

ViewDataDictionary<TModel>中对Model属性进行了重写覆盖隐藏,以达到泛型的目的.主要是处理Model的类型

public class ViewDataDictionary<TModel> : ViewDataDictionary
{ public ViewDataDictionary() : base(default(TModel))
{ } public ViewDataDictionary(TModel model) : base(model)
{ } public ViewDataDictionary(ViewDataDictionary viewDataDictionary) : base(viewDataDictionary)
{ } public new TModel Model
{ get { return (TModel)base.Model; } set { SetModel(value); } } public override ModelMetadata ModelMetadata
{ get
{ ModelMetadata result = base.ModelMetadata; if (result == null) { result = base.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(TModel)); } return result; } set { base.ModelMetadata = value; } } protected override void SetModel(object value)
{ bool castWillSucceed = TypeHelpers.IsCompatibleObject<TModel>(value); if (castWillSucceed) { base.SetModel((TModel)value); } else { InvalidOperationException exception = (value != null) ? Error.ViewDataDictionary_WrongTModelType(value.GetType(), typeof(TModel)) : Error.ViewDataDictionary_ModelCannotBeNull(typeof(TModel)); throw exception; } } }

HtmlHelper<T>.Edit 泛型方法的第一个参数已经通过对象的类型指定了,不能是别的类型,必须和Helper的实例泛型类型相同

HtmlHelper<T>.EditFor 泛型方法可以根据参数推断出泛型类型.

HtmlHelper<T>.EditForModel Html对象有Model的相关信息,所以可以根据元数据信息生成页面代码.

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. php编写验证码

    今天学习到了php登录时的验证码,验证码在我们平时的网站建设中是非常重要的,对于放置一些灌水机.脚本攻击是一个很好地策略. 下面是我写的代码: <?php session_start(); // ...

  2. MySQL 字符串截取相关函数

    MySQL 字符串截取相关函数 在工作中,可能需要将某些字段按某个分割符组成一个字符串作为字段值存取到数据库表中,比如某个任务对应三个结果,分别存储在不同的数据表中,这时可以将这三个不同表的主键按照约 ...

  3. windows环境下svn同步web文件[转]

    windows环境下svn同步web文件 SVN在团队开发中使用非常普遍,是一个很方便的版本控制系统. 如果要是能将SVN服务器上的数据自动发布到Web服务器,那将是整个项目开发.测试更加便捷.利用S ...

  4. openstack与VMware workStation的区别

    免责声明:     本文中使用的部分图片来自于网络,如有侵权,请联系博主进行删除 最近一直在研究云计算,恰好有个同事问了我一个问题:你们研究的openstack到底是什么东西?跟VMware Work ...

  5. ZOJ 1111 Poker Hands

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1111 A poker hand consists of 5 ca ...

  6. Matlab计算矩阵和函数梯度

    一.差分与微分 我自己的理解. 二.求解 2.1 矩阵 这就是matlab的计算结果.太小的话放大些: c = 4 5 9 7 2 1 5 2 6 >> [x,y]=gradient(c) ...

  7. JSP for query

    1. JSP中部分常用标签: Form.jsp <%@ page contentType="text/html;charset=UTF-8" language="j ...

  8. ios 缓存相关信息收集

    链接:http://www.cnblogs.com/pengyingh/category/353093.html 使用NSURLCache让本地数据来代替远程UIWebView请求 摘要: 原文作者: ...

  9. 利用Linq + Jquery + Ajax 异步分页的实现

    在Web显示的时候我们经常会遇到分页显示,而网上的分页方法甚多,但都太过于消耗带宽,所以我想到了用Ajax来分页,利用返回的Json来处理返回的数据, 大大简化了带宽的压力. 先说下思路,无非就是异步 ...

  10. 异步JS:$.Deferred的使用

    异步JS:$.Deferred的使用 原文链接:http://www.html5rocks.com/en/tutorials/async/deferred/ 当我们构建一个平稳的,响应式的HTML5应 ...