写点什么

ASP.NET MVC 模型绑定

  • 2012-02-14
  • 本文字数:699 字

    阅读完需:约 2 分钟

模型绑定(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

2012-02-14 14:372400
用户头像

发布了 479 篇内容, 共 180.2 次阅读, 收获喜欢 53 次。

关注

评论

发布
暂无评论
发现更多内容

架构实战营 模块六 作业

脉醉

#架构实战营

❤ 超详细《软件测试全栈技能》思维导图详解 ❤(建议收藏) ​

程序员阿沐

程序员 软件测试 自动化测试 经验分享 技能图谱

你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?

编程三昧

JavaScript 大前端 函数 8月日更 Arguments

java毕设开发经典选题

清风

毕业设计

拆分电商系统为微服务

feitian

微信业务架构&学生系统管理系统设计

Geek_dae

架构实战营

如何找到靠谱的工长?

escray

生活记录 8月日更 装修记

【iOS独立开发】基于iCloud构建游戏内排行榜

LabLawliet

ios 8月日更 独立开发

架构实战营模块6作业

zlz

在线JSON转Schema工具

入门小站

性能测试框架中实时QPS取样器实现

FunTester

性能测试 测试框架 压力测试 QPS 取样器

Lua 入门到精通( 01 Lua 简介以及软件安装)《做一个脚本高手》

陈皮的JavaLib

lua Linux 运维 脚本语言 8月日更

模块六作业

Mr.He

架构实战营

【架构训练营】模块六作业

zclau

模块6作业

柱林

架构实战营第一期--模块六作业

clay

架构实战营

拆分电商系统为微服务

木云先森

架构实战营

Linux之fgrep命令

入门小站

Linux

模块6 作业

Geek_35a345

架构训练营 模块六

小卷儿

模块六

秀聪

架构训练营

模块六作业

seawolflin

架构实战营

把知识玩起来:Ansible(一)快乐的入门

南冥

kafka核心技术与实战学习笔记(一)

追风少年

kafka

html创建表格有那些小技巧,表单中真的有这么多功能吗

你好bk

html html5 大前端 html/css JavaScrip

模块六作业 - 电商系统微服务

babos

#架构实战营

百度地图开发-在地图上实现路线导航 09

Andy阿辉

android Android 小菜鸟 Android端 8月日更

电商系统微服务拆分-模块6

小牧ah

架构实战营

网络攻防学习笔记 Day120

穿过生命散发芬芳

网络安全 8月日更

Spark 源码阅读 01:环境搭建

程序员赤小豆

spark 技术 Spark 源码

架构实战营模块 6 作业

蔸蔸

ASP.NET MVC模型绑定_Web框架_Roopesh Shenoy_InfoQ精选文章