写点什么

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

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

关注

评论

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

甲方日常 82

句子

随笔杂谈

大数据应用及其价值

Andy

架构师训练营大作业(一)

我是谁

架构师训练营第 1 期

天天CRUD,被领导怼,我是如何从小公司菜鸡到阿里P8架构师?,首次分享Java程序员黄金五年进阶心得

Java架构之路

Java 程序员 架构 面试 编程语言

系统高可用分析

Andy

溯源反制之MySQL蜜罐研究

Java架构师迁哥

2021 第七季 28天写作训练 测试

将军-技术演讲力教练

2020年无人场景市场趋势洞察

IoT云工坊

人工智能 物联网 智慧照明 节能管理 安防报警

在onelogin中使用OpenId Connect Implicit Flow

程序那些事

权限系统 程序那些事 openid 权限架构 onelogin

四万字干货 | 《高博士区块链观察18讲》文字稿,带你系统了解区块链

CECBC

区块链

Openresty协程调度对比Go协程调度

行如风

高并发 协程 openresty Go scheduler

阿里巴巴Java架构师70W年薪招聘需求,已拿Offer经验分享

Java架构追梦

Java 学习 阿里巴巴 架构 面试

一次系统调用时间过长追踪完整教程案例

AI乔治

Java Linux 架构

架构师训练营W12作业

Geek_f06ede

CSS07 - 伪类

Mr.Cactus

html/css

不愧是Alibaba技术官:程序员必会的架构知识清单,如何让你技术上的提升面试时的丰收

Java架构之路

Java 程序员 架构 面试 编程语言

吴桐/数字化的下一个十年,你可能不会更幸福

CECBC

数字化时代

量子通信触达消费者

CECBC

量子通信

一文汇总数据库基础知识点!(建议收藏)

Java鱼仔

如何通过NGINX的log日志来分析网站的访问情况,试试这些命令

我爱娃哈哈😍

nginx Shell

CSS06 - 标签的显示模式与转换

Mr.Cactus

html/css

如何使用Eclipse内存分析工具定位内存泄露

AI乔治

Java eclipse 架构

智慧城市智能化建设,平安社区平台建设综合解决方案

t13823115967

智慧城市

深入理解Nginx的四级指针

赖猫

c++ nginx Linux

甲方日常 81

句子

随笔杂谈

CSS05 - 常用的高级选择器

Mr.Cactus

html/css

CSS09 - 文本&背景属性

Mr.Cactus

html/css

数据库表数据量大读写缓慢如何优化(1)【冷热分离】

我爱娃哈哈😍

大数据 架构 海量数据库的设计与实践 优化 数据库优化

掌上警务,二维码一键报警定位系统

t13823115967

二维码定位报警系统开发

CSS08 - CSS特性

Mr.Cactus

html/css

数据中心“容灾”和“备份”的区别

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