HtmlHelper
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的更多相关文章
- 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 从网上下 ...
随机推荐
- 我存在,你深深的循环里--从反射看JSON死循环
JSON有一个非常经典的问题:JSONException: There is a cycle in the hierarchy!俗称死循环.解决这个问题至少有三种以上的办法,总之一句话就是过滤.今 ...
- TCL随记(2)
file函数: file dirname name 返回文件所在目录 file exists name 测试文件是否存在,存在返回1,否则返回0 file extension name 返回文件扩展名 ...
- 记codevs第一次月赛
第一次参加这种有奖励的比赛(没错,我就是为猴子而去的 一年没怎么碰代码果然手生,还是用没写多久的C++,差点全跪了 T1数学奇才琪露诺: 首先定义一个函数F(x),F(x)=x的各个数位上的数字和 然 ...
- 浅谈对git的认识
在上大二之前我根本不知道git是什么,根本不知道它有什么功能,以及应用于那个领域,那天老师说让我们了解一些它,并对其进行一下学习.我瞬间就蒙了,但是我并没有把其抛在脑后,而是通过在其它方式,对其进行了 ...
- 01.安装Memcached
1.安装Memcached 1.下载Memcached及其依赖 下载memcached-1.4.24.tar.gz和libevent-2.0.22-stable.tar.gz文件并解压如下: [liz ...
- 设计模式之享元模式(FlyWeight)
#include <iostream> #include <string> #include <list> #include <vector> usin ...
- UVA 10004 Bicoloring
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=12&pa ...
- 【BZOJ】【1055】【HAOI2008】玩具取名
区间DP/记忆化搜索 sigh……看了提示才想到是区间DP >_>我果然还是太弱 f[l][r][k]表示L到R这段区间能否合并成K,那么就是枚举拆分方案(从哪里断开)和组合方式(左半合成 ...
- GS连接事件
GS网络连接事件 //网络事件 //这个事件是在libevent里面的收到的事件就是在那个listen里面,就是客户端打开,服务器收到通知 link_stat stat = (link_stat)rP ...
- WPF命令参数CommandParameter
XAML代码如下: <Window x:Class="Demo006.MainWindow" xmlns="http://schemas.microsoft.com ...