50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:372393
用户头像

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

关注

评论

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

JUnit速查手册

jiangling500

Java JUnit

保持模块的兼容性

Rayjun

go modules Go 语言

week12-homework

J

什么是MySQL数据库?看这一篇干货文章就够了!

我是哪吒

学习 程序员 后端 MySQ 2月春节不断更

年终述职PPT(996一年,怎么会什么都没干!)

鲁米

年终总结

公路交通区块链技术的痛点问题和典型场景应用

CECBC

区块链

翻译:《实用的Python编程》01_03_Numbers

codists

Python

ElasticSearch.02 - 安装

insight

elasticsearch 2月春节不断更

Flink集群部署:Standalone部署

正向成长

数字资产助力未来十年打赢数字经济战

CECBC

数字经济

第四章作业

Deborah

华为 MPLS的数据转发流程

艺博东

华为

Elasticsearch Mapping Index索引

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

面向对象设计原则

引花眠

面向对象设计原则

程序员成长第八篇:做好测试工作

石云升

程序员 测试 2月春节不断更

机器学习笔记之:

Nydia

记一次有意思的微信视频号直播

小匚

产品经理

ARTS打卡 第31周

引花眠

微服务 ARTS 打卡计划

今日出门

Nydia

日记 2021年2月15日(周一)

Changing Lin

2月春节不断更

【译文】工作六年后,我对软件开发的认知转变

Zhendong

程序员 软件开发

11. 用别人写好的代码,完成我的工作,剩下的时间去摸鱼

梦想橡皮擦

Python 2月春节不断更 python入门

中国科学家突破区块链核心技术

CECBC

区块链

《我们脑中挥之不去的问题》 - 卓克科普(3)

石云升

读书笔记 科普 2月春节不断更

深入 Python 解释器源码,我终于搞明白了字符串驻留的原理!

Python猫

Python 编程

松耦合

sinsy

设计模式 RabbitMQ

Idea应用启动时WEB-INF/lib无效标记问题处理

程序员架构进阶

Java IntelliJ IDEA 七日更 2月春节不断更

CI-基于JMeter的性能测试

夏兮。

工作学习累了?试试 GitHub 上的那些简单易学的游戏项目吧!

JackTian

GitHub 开源 游戏 2月春节不断更

诊所数字化从预约开始

boshi

数字化医疗 七日更 线上预约

【LeetCode】最大连续1的个数Java题解

Albert

算法 LeetCode 2月春节不断更

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