ASP.NET MVC模型绑定

2012 年 9 月 16 日6070


ASP.NET MVC模型绑定


http://www.edu-hb.com

2012-2-15 14:56:49 来源: itwriter

  模型绑定(Model Binding)特性使用请求数据来创建强类型对象,以此简化控制器的动作。Jess Chadwick 在 MSDN 上的一篇文章中深入探索了该特性,并研究了复杂的场景,包括缺省模型绑定器不满足要求时如何定制。

  ASP.NET MVC (来自:湖北教育信息网edu-hb.com)模型绑定是什么?它让下面这段代码:

public ActionResult Create ()

{

var product = new Product () {

AvailabilityDate = DateTime.Parse (Request["availabilityDate"]),

CategoryId = Int32.Parse (Request["categoryId"]),

(来自:湖北招生考试网www.edu-hb.com)

Description = Request["description"],

Kind = (ProductKind) Enum.Parse (typeof (ProductKind),

Request["kind"]),

Name = Request["name"],

UnitPrice = Decimal.Parse (Request["unitPrice"]),

UnitsInStock = Int32.Parse (Request["unitsInStock"])

}

};

  可以这样写:

public ActionResult Create (Product product)

{

// ...

}

  ASP.NET 会自动将查询字符串参数名称与强类型对象中的属性名称相对应。这也支持 JSON 的 post 值。模型绑定支持更复杂的状况,比如集合与(来自:湖北招生考试网www.edu-hb.com)嵌套对象,不过在使用集合时你必须小心语法(其中要使用索引器来表示集合中的数据项)。

  某些情况下,读者可能希望使用自定义的模型绑定器,以扩展现有的模型绑定器。常用的例子是将接口与抽象类绑定,这需要与下层业务模型的高度耦合,因为在运行时,绑定器需要基于请求(来自:湖北招生考试网www.edu-hb.com)数据选择特定实现。Jess 的文章展示了如何实现,只需继承 DefaultBindingProvider,并重载需要的行为。想知道如何对自定义的模型绑定期进行单元测试,可参考 Scott Hanselmann 的文章《分割 DateTime——对 ASP.NET MVC 的模型绑定器进行单元测试》。

  查看英文原文:ASP.NET MVC Model Binding

[责任编辑:Admin]

【】【】



0 0