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

我们知道,在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.这是测试的一个简单实体,代码如下:

时间: 2025-01-21 06:34:07

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

Asp.Net Mvc Beta新特性之自动绑定(2)-深入探索篇

在上篇中介绍了自动绑定的基本用法,在本篇中,我们将深入了解自动绑定的工作原理. 自动绑定的确是让人感到兴奋的特性,然而,为了让它可以在我们的项目中更好的工作,我们有必要深入了解如何更进一步细调该特性以及它是如何工作的.而本文正式即将揭开这个谜底. 为了更好的了解该特性,我们有必要到codeplex去下载一份asp.net mvc的源代码并分析之,在本文写作的时候,codeplex上已经放上了beta版的源码,如果想进一步了解的朋友可以下载并对照本文分析. 在beta版中,新增了自动绑定这一特性,

ASP.NET MVC Beta新特性之IValueProvider

在刚发布的ASP.NET MVC Beta版中,在UpdataModel方法中提供了一个带有IValueProvider参数的重载.那么这个IValueProvider有什么用呢? 我们先来看一个简单的场景,例如我们的blog系统有一个Post的对象,Post对象有一个Tags属性和Categories属性,他们的类型分别是: Post.Tags : StateList<string> (BlogEngine.NET 中的一个List<T>的扩展类型) Post.Categorie

ASP.NET MVC 1.1 _VS2010 &amp; ASP.NET MVC 2 新特性

ASP.NET MVC 1.1 on Visual Studio 2010 Beta1 由于 VS2010 Beta的发布,所以ASP.NET MVC在Codeplex上发布了一个专门为其准备的ASP.NET MVC版本: http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28527   关于ASP.NET MVC 2.0   另外在ASP.NET MVC Roadmap 中提到了关于ASP.NET MVC 2.0

艾伟:Silverlight 3 Beta 新特性解析(2)-Graphics篇

前提条件: 阅读本文之前请确认你已经安装了如下软件 Visual Studio 2008 (Express) SP1 Silverlight 3 Tools For Visual Studio Microsoft Expression Blend 3 MIX 09 Preview   本篇主要内容: 如何利用新的Bitmap API来创建我们自己的图像 透视3D图像(Perspective 3D Graphic) 像素模糊和投影效果 Element-To-Element Binding Bitm

Silverlight 3 Beta 新特性解析(2)-Graphics篇

前提条件: 阅读本文之前请确认你已经安装了如下软件 Visual Studio 2008 (Express) SP1 Silverlight 3 Tools For Visual Studio Microsoft Expression Blend 3 MIX 09 Preview 本篇主要内容: 如何利用 新的Bitmap API来创建我们自己的图像 透视3D图像(Perspective 3D Graphic) 像素模糊和投影效果 Element-To-Element BindingBitmap

ASP.NET MVC 3 Beta新特性以及.Net开源的趋势----最新译文

NuPack – .NET的开源软件包管理器 NuPack是一个开源的软件包管理器,它使你在项目中能够更加容易的查找.安装和使用.NET 库.它能够和所有的.NET 项目类型很好的一起工作(包括,没有任何限制的,ASP.NET Web Forms和ASP.NET MVC). NuPack 使维护开源项目的开发者(例如, Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks, Elmah, 等等) 能够去打包他们的库,

一起谈.NET技术,ASP.NET MVC 3 Beta新特性以及.Net开源的趋势----最新译文

NuPack – .NET的开源软件包管理器 NuPack是一个开源的软件包管理器,它使你在项目中能够更加容易的查找.安装和使用.NET 库.它能够和所有的.NET 项目类型很好的一起工作(包括,没有任何限制的,ASP.NET Web Forms和ASP.NET MVC). NuPack 使维护开源项目的开发者(例如, Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks, Elmah, 等等) 能够去打包他们的库,

ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator

对于ASP.NET MVC基于标注特性的Model验证,很多人只知道应用在数据类型及其属性上用于定义验证规则和错误消息的ValidationAttribute.通过<ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator>的介绍,我们知道了最终用于进行Model验证的是一个叫做ModelValidator的组件.ValidationAttribute对应的ModelValidator为DataAnnotationsModelValidat

ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidatorProvider

DataAnnotationsModelValidator最终是通过它对应的ModelValidatorProvider,即DataAnnotationsModelValidatorProvider创建的.通过前面的介绍我们知道它是AssociatedValidatorProvider的子类,后者在用于获取ModelValidator的GetValidators方法中已经根据指定的Model元数据所有特性创建出来,DataAnnotationsModelValidator只需要从中筛选出继承自V