asp.net mvc 中 htmlhelper 中各生成 html 控件函数的实现(表达式解析)
2014-03-07 14:26
721 查看
例如下面代码:
在运行时将在页面里生成一个html控件:
这里 input 标记固定写出,id、name、value 各属性中的值则是通过解析表达式获得。
解析过程是:
传入 textboxfor 函数的表达式是:
把表达式的属性 body 转换为 expressions 空间中的一种类型:
这空间里的类表示各种表达式形态,比如左右赋值的、属性赋值的等。这里的传入形式是读取属性,因此直接转 memberexpression。然后调用:
就可得到:Addr,这就算 id、name 的值;
然后编译表达式:
再执行:
model 可在页面里直接获得,这样会执行读 addr 属性值的操作,这就得到了 html 控件 value 属性的值;
@Html.TextBoxFor(m => m.Addr)
在运行时将在页面里生成一个html控件:
<input id="Addr" name="Addr" type="text" value="sdfsdf" />
这里 input 标记固定写出,id、name、value 各属性中的值则是通过解析表达式获得。
解析过程是:
传入 textboxfor 函数的表达式是:
System.Linq.Expressions.Expression<Func<ModelType, string>>
把表达式的属性 body 转换为 expressions 空间中的一种类型:
System.Linq.Expressions.MemberExpression me = e.Body as System.Linq.Expressions.MemberExpression;
这空间里的类表示各种表达式形态,比如左右赋值的、属性赋值的等。这里的传入形式是读取属性,因此直接转 memberexpression。然后调用:
me.Member.Name
就可得到:Addr,这就算 id、name 的值;
然后编译表达式:
var fun=e.Compile();
再执行:
fun(Model)
model 可在页面里直接获得,这样会执行读 addr 属性值的操作,这就得到了 html 控件 value 属性的值;
相关文章推荐
- ASP.NET MVC 使用总结(二)——扩展HtmlHelper实现动态生成title及meta
- ASP.NET MVC 使用总结(二)——扩展HtmlHelper实现动态生成title及meta
- ASP.NET 3.5 MVC 架构与实战笔记6 HtmlHelper控件解析
- ASP.NET 3.5 MVC 架构与实战笔记6 HtmlHelper控件解析
- asp.net mvc 分页控件:HtmlHelper扩展
- 新版asp.net mvc 分页控件:HtmlHelper扩展
- ASP.NET MVC中HtmlHelper控件7个大类中各个控件使用详解
- ASP.NET MVC中HtmlHelper控件7个大类中各个控件使用详解
- [ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
- 【asp.net mvc】 扩展 htmlhelper 实现分页
- [ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
- ASP.NET MVC 之路(一)---------HtmlHelper 擴展控件
- 在 ASP.NET MVC 中创建自定义 HtmlHelper 控件
- asp.net mvc简单实现基于Razor的分页控件
- ASP.NET MVC扩展之HtmlHelper辅助方法
- 深入ASP.NET MVC 之八:Model Template与Html.Editor的实现
- ASP.NET MVC htmlHelper
- ASP.NET MVC HtmlHelper用法大全
- ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper 【转】
- YbSoftwareFactory 代码生成插件【十】:ASP.NET WebApi MVC下审计、缓存和导出功能的实现