BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

ASP.NET MVC模型绑定

| 作者 Roopesh Shenoy 关注 0 他的粉丝 ,译者 郑柯 关注 3 他的粉丝 发布于 2012年2月15日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

ASP.NET MVC模型绑定是什么?它让下面这段代码:

public ActionResult Create()
{

	var product = new Product() {

		AvailabilityDate = DateTime.Parse(Request["availabilityDate"]),
		CategoryId = Int32.Parse(Request["categoryId"]),
		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值。模型绑定支持更复杂的状况,比如集合与嵌套对象,不过在使用集合时你必须小心语法(其中要使用索引器来表示集合中的数据项)。

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

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

比java好 by wen zhang

反正是抄rails的。。当然比java固步自封就不抄还是好多了

Re: 比java好 by he turner

同意,我也觉得Java这些年没什么发展,尤其是国内的Java应用环境造就了一大批低水平的Java员。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT