快速业务通道

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

我们知道,在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.然后开始加入代码,这个实践的项目文件如下图:

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

工程建立完毕后,我们在NewModelBinderDemo.Library.Entities中加入一个SimpleArticle.cs.这是测试的一个简单实体,代码如下:

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

这是一个没有加任何修饰的简单实体.

然后修改BinderController,加入Action,先看看Controller中的全部代码:

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

然后是3个aspx页面.我们看看关键的simpletest.aspx

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

这部分代码要注意下,标题和正文的表单命名,是article.title和article.content,这是不是有什么规则了?暂时先不说明.有兴趣的朋友可以拿demo研究研究,接下来的部分我们会慢慢研究这儿这样命名的原因.

至于其他页面就不再详细说明其中的代码了,感兴趣的朋友可以下载附带的demo自行查看.完成上面的一切后,怀着有点忐忑的心情按下Crtl+F5….一步步进行:

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

Ok.这个页面没问题…不过要是这儿也有问题,就说明mvc白学了,囧…

点击下->

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

这儿也能进来…不过好像这都不是关键.赶紧填点东西..

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

按下”提交数据”查看结果:

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

上天作证,我啥事都没做,居然获取到article了….太激动了.这意味着我们在mvc框架下开发基本上可以告别繁琐的页面参数获取了,想想p5中让人无法忍受的modelbinder,beta中的是多么的和蔼可亲啊.

先别急着兴奋,表单可不止文本域,而且传递的参数可不是只有字符串.这是肯定的,那么我们试试继续考验下DefaultModelBinder..

添加第二个实体. SimpleArticle,具体代码如下:

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

然后对应添加名为AdvanceTest和AdvanceTestResult的action,代码如下:

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

对应添加advancetest.aspx和advancetestresult.aspx,样式和先前一致,此处就不再浪费地方了.

然后我们继续测试…

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

填入合适的数据,提交..

Asp.Net Mvc Beta新特性之自动绑定(1)-体验篇

非常的神奇,我们仍然什么都没做,系统的ModelBinder已经完全识别了AdvanceArticle类并对其下的各种类型的属性赋值.不过,有的朋友可能担心了,我们刚才的表单中可是有时间和数字类型,如果用

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号