asp.net MVC中Action参数不只是一些基本类型,也支持实体参数。那么从客户端传来的数据如何映射或转换成实体对象呢?就是通过实体绑定类ModelBinder。此系列类在请求转化为后台Controller的Action方法前,捕获传递过来的数据,并对其进行解析和转换,最终为实体类对象。

在系统启动前,Global.asax.cs中的方法Application_Start方法调用下面代码定义参数转换规则。

  1. //model binders
  2. ModelBinders.Binders.Add(typeof(BaseNopModel), new NopModelBinder());

NopModelBinder继承DefaultModelBinder承担系统的实体绑定类,但好像只是留一个借口,并没有使用。主要是继承父类的方法,稍有改变的地方是:方法BindModel添加了对NopModel的绑定支持。

  1. public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
  2. {
  3. var model = base.BindModel(controllerContext, bindingContext);
  4. if (model is BaseNopModel) ((BaseNopModel) model).BindModel(controllerContext, bindingContext);
  5. return model;
  6. }

方法GetModelProperties添加了一个过滤方法,只是此方法尚未启用。

类BaseNopModel是所有Model的基类,支持对自定义属性的存储。并且有一个绑定到解析器的方法BindModel,只是尚未发现有子类实现此方法。

NopCommerce架构分析之五------Model绑定Action参数的更多相关文章

  1. NopCommerce架构分析(转载)

    原文 一,NopCommerce架构分析之开篇 NopCommerce是.net开源项目中比较成熟的一款业务应用框架,也是电子商务系统中的典范.所以很想多学习一下里面的设计和实现方式. 二,NopCo ...

  2. ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例

    在实际的ASP.NET mvc项目开发中,有时会遇到一个参数是一个List.Dictionary等集合类型的情况,默认的情况ASP.NET MVC框架是怎么为我们绑定ASP.NET MVC的Actio ...

  3. NopCommerce架构分析之参考资料

    http://www.cnblogs.com/RobbinHan/archive/2011/11/30/2269537.html 依赖注入框架Autofac的简单使用 http://www.cnblo ...

  4. NopCommerce架构分析之八------多语言

    系统支持的语言是有类:Language表示: 多语言资源对应的类为:LocalizedProperty: 当先选择某种语言存储在类中:GenericAttribute: 多语言可以导出为XML文件,当 ...

  5. NopCommerce架构分析之六------自定义RazorViewEngine

    系统中对Razor的支持包括两部分,其中之一就是自定义RazorViewEngine 一.自定义RazorViewEngine 在Global.asax.cs的Application_Start方法中 ...

  6. NopCommerce架构分析之三---数据库初试化及数据操作

    系统启动时执行任务:IStartupTask,启动时执行的任务主要是数据库的初始化和加载. IStartupTask调用IEfDataProvider进行数据库的初始化. IEfDataProvide ...

  7. NopCommerce架构分析之四----插件机制

    NopCommerce支持灵活的插件机制,所谓Web系统插件,其实也就是可以像原系统的一部分一样使用. Web系统的使用方式就是客户端发送一个请求,服务端进行解析.在asp.net MVC中对客户请求 ...

  8. NopCommerce架构分析之一----依赖类生成容器

    NopCommerce为了实现松耦合的框架设计目的,使用了IOC框架:Autofac.据有人测试,Autofac是性能好的IOC工具. 1.在IOC中,组件首先需要在IOC中注册,有通过配置文件注册的 ...

  9. nopCommerce架构分析系列(二)数据Cache

    原文(http://www.cnblogs.com/gusixing/archive/2012/04/12/2443799.html)非常感谢作者顾思行的分享! 序言 在很多访问量较大的系统中,尤其在 ...

随机推荐

  1. Oracle分区表做跨分区查询

    问:有一张大表,其中按时间字段(TIME_ID)进行表分区(按季度分区),但是如果业务人员做跨季度的大批量数据的查询时,未能走TIME_ID分区索引,导致全表扫描.此种情况该如何处理? 示例解析: 1 ...

  2. iOS 获取手机的型号,系统版本,软件名称,软件版本

    转载自:http://www.2cto.com/kf/201210/162333.html   网上搜索出来的,记录下来以后使用方便: [java]//手机序列号      NSString* ide ...

  3. bnuoj 1071 拼图++(BFS+康拓展开)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=1071 [题意]:经过四个点的顺逆时针旋转,得到最终拼图 [题解]:康拓展开+BFS,注意先预处理,得 ...

  4. 1060: [ZJOI2007]时态同步 - BZOJ

    Description小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的 ...

  5. L​i​n​u​x​环​境​变​量​的​设​置​和​查​看​方​法

    L​i​n​u​x​环​境​变​量​的​设​置​和​查​看​方​法 1. 显示环境变量HOME [root@AY1404171530212980a0Z ~]# echo $HOME /root 2. ...

  6. 扩展DJANGO的LISTVIEW

    不用MODEL,不用QUERYSET,而用get_queryset方法来扩展LISTVIEW, 从而实现特定过滤或搜索功能. class DVListView(ListView): template_ ...

  7. linux命令中 rpm –qa|grep softname的含义

    rpm –qa是列出所有rpm包后面接管道 |grep softname就是查含有softname的包名

  8. SPRING IN ACTION 第4版笔记-第九章Securing web applications-010-拦截请求

    一. What if you wanted to restrict access to certain roles only on Tuesday? Using the access() method ...

  9. QT UAC问题汇总贴

    http://www.qtcn.org/bbs/read-htm-tid-47983.html http://www.cnblogs.com/bombless/archive/2010/12/29/h ...

  10. MyBatis的动态SQL操作--插入

    需求:向数据库中插入一条数据 //id,name,sal非空,三个字段都插入 insert into student(id,name,sal) values (?,?,?) //id,name非空,只 ...