当前位置: 首页 > web开发 > ASP.NET > 正文

体验Asp.Net Mvc Preview5(3)-探索ModelBinder的工作原理

时间:2011-05-09

在前面的两篇文章中,我们研究了Asp.Net Mvc Preview5的ViewEingine的改进,从本篇开始,我们开始研究Preview5中的新特性:ModelBinder.

首先我们来了解下什么是ModelBinder特性,这有什么用处,在以前的版本中,如果我们要在Action中获取数据,一般有三种方式,一是通过Action的参数,但是由于某些原因,这儿只能获取到简单类型的参数,比如int,string等,第二种方式是通过Request来获取,但是当数据较多的时候,这个方式实在太费劲了.三是使用BindingHelperExtensions中的扩展方法,但是这种方式还是不能满足我们的要求.我们理想中的方式是:

如果能这样写,将直接能在参数中方便获取传入对象.会使得程序的结构更加合理.在新版中,框架引入ModelBinder来解决了这个问题,使得我们理想中的效果得以实现.

ModlBinder的作用就是建立一种html参数和对象的转换关系,可以通过系统内置或者用户添加的Binder来完成转换过程,每当Action中含有参数的时候,系统会自动查询url或者表单中是否含有相应的值,然后调用一定的ModelBinder对象来将参数转化成传入的值.

下面我们来分析下ModelBinder的工作过程.我们知道,Action的执行实际上实在ControllerActionInvoker中进行的,这个类中提供了一些方法,在执行的过程中,它首先找到Controller中Action对应的Method,然后判断Method是否带有参数,如果有参数,将使用特定的方式来对这些参数赋值.这部分具体的代码我们弄出来瞧瞧: