ASP.NET MVC Beta版新特性之IValueProvider

开发 后端
本文介绍了一些ASP.NET MVC Beta版的发布背景,以及其中的新特性IValueProvider的介绍。

ASP.NET MVC Beta版发布于2008年10月。该beta版本的特性已经非常接近于正式版V1的完整特性,虽然还会在最终的V1版发布之前加入若干个特性(包括几个VS工具增强等)。但开发团队决定将这个版本称为“beta”版本,是因为其品质和测试要比以前的预览版本高(其中包含了许多缺陷修补和性能调校方面的工作),他们感觉,其中的核心功能现在已经“烧制”得足够好,从这个版本到最终版不会有重大变动了。

在ASP.NET MVC Beta版中,在UpdataModel方法中提供了一个带有IValueProvider参数的重载。那么这个IValueProvider有什么用呢?

我们先来看一个简单的场景,例如我们的blog系统有一个Post的对象,Post对象有一个Tags属性和Categories属性,他们的类型分别是:

Post.Tags : StateList< string> (BlogEngine.NET 中的一个List< T>的扩展类型)

Post.Categories : StateList< Category>  假如我们要使用UpdataModel方法来对我们Post过来的Form表单数据更新到我们的Post对象中,可能会有如下的代码:

  1. /// < summary>  
  2. /// 将提交过来的新随笔表单内容保存到数据库  
  3. /// < /summary>  
  4. [AcceptVerbs("POST"), ActionName("NewPost")]  
  5. public ActionResult SaveNewPost(FormCollection form)  
  6. {  
  7.     Post post = new Post();  
  8.     try 
  9.     {  
  10.         UpdateModel(post, new[] { "Title""Content""Slug""Tags""Categories" });  
  11.     }  
  12.     catch 
  13.     {  
  14.         return View(post);  
  15.     }   
  16.     ..  
  17. }    

很明显,在上面的代码中,我们用UpdateModel来更新Tags和Categories属性的时候,是不可能成功的,因为UpdateModel方法不知道怎样将Form提交过来的"Tags"和"Categories"数据转换为StateList< string>类型和StateList< Category>类型。这时候就需要我们提供一个ValueProvider,来进行这个转换。

以上就是ASP.NET MVC Beta版中IValueProvider的作用。

【编辑推荐】

  1. 概述ASP.NET MVC与FubuMVC核心框架
  2. 介绍ASP.NET MVC的实现
  3. 如何从ASP.NET 2.0中发送电子邮件
  4. 浅谈ASP.NET应用
  5. ASP.NET中的ViewState本质
责任编辑:yangsai 来源: 网络
相关推荐

2010-10-12 09:52:02

ASP.NET MVC

2011-01-15 23:07:59

2010-10-18 09:03:44

ASP.NET MVC

2009-07-23 10:08:24

asp.net mvc

2010-03-25 08:46:16

ASP.NET 4 B

2010-10-08 14:32:32

ASP.NET MVCNuPack

2009-07-30 14:55:43

ASP.NET 2.0

2010-06-23 15:44:03

ASP.NET MVC

2010-10-20 09:05:16

ASP.NET MVC

2014-08-26 09:22:40

ASP.NET MVCRouting

2015-06-18 17:37:19

ASP.NET

2009-07-24 13:20:44

MVC框架ASP.NET

2010-06-25 08:51:46

ASP.NET MVC

2014-07-29 10:00:30

ASP.NETMVCAutoFac

2009-07-31 12:43:59

ASP.NET MVC

2009-09-04 16:28:05

ASP.NET 4.0

2010-02-03 09:50:58

ASP.NET MVC

2010-12-07 09:38:15

ASP.NET MVC

2009-07-28 17:17:19

ASP.NET概述

2009-07-22 13:24:24

ASP.NET MVC
点赞
收藏

51CTO技术栈公众号