我们知道,在Asp.Net Mvc Preview5中加入了全新的ModelBinder特性,虽然这个特性非常的强大,但是使用起来并不是那么的友好,因此,在最新的Asp.Net Mvc Beta中,框架对这部分进行了进一步的加强,使得复杂参数的自动绑定得以实现,本文将分级部分完整探讨整个mvc框架中的modelbinder实现和完全挖掘系统自带的ModelBinder的能力,使得基于mvc框架的web开发脱离页面取值的苦海.
(参见: http://www.cnblogs.com/leven/archive/2008/08/31/1280481.html以及http://www.cnblogs.com/leven/archive/2008/09/01/1280862.html)
首先我们稍微回顾下ModelBinder的使用方法.首先定义一个实体类,然后针对该类写一个ModelBinder,确定绑定关系,这样就可以在action的参数中直接使用了.
然而,很多朋友都有体会,这个ModelBinder用起来太过复杂.有没有更好的解决方法呢?在Asp.Net Mvc beta中,这个答案是肯定的.那就是beta中提供的新特性,自动绑定.
我们知道,在preview5中,系统也能对基本类型以及DateTime和Nullable<DateTime>进行自动绑定,但是对于自定义类是无能为力的.但是想一想,自定义实体类也应该是由一系列简单类型构成的啊,也就是说,一个复杂的实体类都是有很多简单类型构成,是不是可以有一个通用的方法来做这个绑定呢?答案是肯定的,其实在我上篇关于preview5绑定的文章例子中就是提供一个相对简单的通用绑定方案,理所当然的,我们可以扩展这个方案,让它更加智能化一些,想来Asp.Net Mvc开发团队也意识到这一点,于是在最新的beta版中,mvc框架就增强了DefaultModelBinder的功能,使得绑定工作尽可能的简化.
在本篇文章中,我们会探讨新的ModelBinder如何使用,且它是如何工作的.
首先,我们用最快的方式进行一次”新版”ModelBinder的实践,建立一个Mvc工程.设定一个默认的routing.然后开始加入代码,这个实践的项目文件如下图:
工程建立完毕后,我们在NewModelBinderDemo.Library.Entities中加入一个SimpleArticle.cs.这是测试的一个简单实体,代码如下: