写点什么

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

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

关注

评论

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

如何实现一个好的知识管理系统?

Geek_da0866

小程序容器技术超有料,可以让移动研发效率大幅提升

Speedoooo

跨端开发 降本增效 研发效率 小程序容器

你的列表很卡?这4个优化能让你的列表丝般顺滑

岛上码农

flutter ios 前端 安卓 签约计划第三季

一文读懂Plato Farm的ePLATO,以及其高溢价缘由

西柚子

一文读懂Plato Farm的ePLATO,以及其高溢价缘由

BlockChain先知

如何让个性化推荐即刻触达?云原生数据库GaussDB(for Redis)来助力

华为云开发者联盟

数据库 云原生 后端

leetcode 452. Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球(中等)

okokabcd

LeetCode 数据结构与算法 贪心算法

怎样实现文档协同?

Baklib

面试官:4年经验没碰过Nginx? Nginx入门,图文超详细

LoneWalker、

nginx

mysql 最大建议行数2000w,靠谱吗?

京东科技开发者

MySQL 数据库

【图解】三次握手,四次挥手 —— 用心看这一篇就够了

攻城狮杰森

计算机网络 TCP/IP 数据传输 7月月更

React Context

程序员海军

7月月更

一篇文章读懂人工神经网络

天狼

人工智能 神经网络 算法 ann

字节跳动Java研发面试99题(含答案):JVM+Spring+MySQL+线程池+锁

程序知音

Java 字节 程序员面试 后端技术 八股文

如何查看蓝牙耳机的蓝牙版本

贾献华

7月月更

带来高价值用户体验的低代码开发平台

力软低代码开发平台

深度 | 自动驾驶数据服务进入2.0时代

澳鹏Appen

人工智能 自动驾驶 计算机视觉 智能驾驶 激光雷达

8000字讲透OBSA原理与应用实践

华为云开发者联盟

后端 OBS 运价计算 OBSA

Starfish Os X MetaBell战略合作,元宇宙商业生态更进一步

小哈区块

数据管理的重点

奔向架构师

数据管理 7月月更

一种比读写锁更快的锁,还不赶紧认识一下

华为云开发者联盟

高并发 开发 ReadWriteLock StampedLock

建筑云渲染的应用正在扩大,越来越多的行业急需可视化服务

Finovy Cloud

云渲染 GPU渲染

AIRIOT答疑第6期|如何使用二次开发引擎?

AIRIOT

二次开发 物联网低代码平台

Java之路必读与知识点分析

魏铁锤

一篇搞定Redis中的BigKey问题

知识浅谈

redis 底层原理 7月月更 签约计划第三季

Starfish Os X MetaBell战略合作,元宇宙商业生态更进一步

西柚子

HarmonyOS 3纯净模式可限制华为应用市场检出的风险应用获取个人数据

科技汇

如何对话CIO/CTO

凌云Cloud

销售 企业管理系统 CIO To B业务

知识管理系统推动企业信息化发展

Baklib

java零基础入门-如何统计字符串中每个字符的出现次数?

喵手

Java 7月月更

一篇文章带你走进pycharm的世界----别再问我pycharm的安装和环境配置了!!!

是Dream呀

Python 后端 pycharm 编译器 环境

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