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

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

关注

评论

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

mysql中的事务隔离级别序列化如何实现

知识浅谈

MySQL 隔离级别 10月月更

Spring Boot 集成 Redis 配置 MyBatis 二级缓存

微枫Micromaple

redis 缓存 mybatis springboot 10月月更

2022-10-01:给定一个字符串 s,计算 s 的 不同非空子序列 的个数 因为结果可能很大,所以返回答案需要对 10^9 + 7 取余 。 字符串的 子序列 是经由原字符串删除一些(也可能不删除

福大大架构师每日一题

算法 rust 福大大

开发者有话说|程序猿工作多年之后的感悟

慕枫技术笔记

个人成长

16个分论坛出品标准大揭秘,期待你的申请!

开源社

从特斯拉人形机器人亮相看AI人工智能模型落地面临的两个难题

felix

落地 机器人 AI人工智能

【从0到1学算法】1. 如何获取题中关键信息

Geek_65222d

10月月更

面试官:高并发场景下,你们是怎么保证数据的一致性的?

一灯架构

Java MySQL 10月月更

数组操作の旋转二维数组

掘金安东尼

算法 10月月更

大数据ELK(十):使用VSCode操作猎聘网职位搜索案例

Lansonli

ELK 10月月更

体验 Orbeon form PE 版本提供的 JavaScript Embedding API

汪子熙

Java SAP commerce 10月月更 oberon

OpenHarmony如何控制屏幕亮度

坚果

OpenHarmony 10月月更

一起玩OptaPlanner-Study,玩转第一个程序

积木编程

COSCon'22主论坛来袭 开源站在十字路口

开源社

简述构建微服务架构的四大挑战

穿过生命散发芬芳

微服务 10月月更

Go学习之路-1.认识GO语言

子不语Any

Go 后端 10月月更

架构师的十八般武艺:线上运维

agnostic

运维

Python应用之计算三角形面积

芯动大师

10月月更 Python代码 计算三角形面积

MyBatis学习笔记之JDBC

薛定谔的猫

mybatis JDBC 10月月更

用任意类型编写代码——一文带你了解泛型编程

宇宙之一粟

Java 泛型编程 10月月更

Qt解压带有密码的加密文件

中国好公民st

c++ Qt Company 10月月更

微服务稳定性保障

穿过生命散发芬芳

微服务 10月月更

【LeetCode】重新格式化电话号码Java题解

Albert

LeetCode 10月月更

《零代码教练指南》正式发布

明道云

今日国庆,祝福祖国!【文末超级福利】

图灵社区

读书 国庆节

[架构实战] 学习笔记二

爱学习的麦子

ESP32-C3 学习测试 蓝牙 篇(四、GATT Server 示例解析)

矜辰所致

蓝牙 ESP32-C3 10月月更 GATT

【一Go到底】第一天---初识Goooooooooooooooooooooooo

指剑

Go go并发 10月月更

跟随一组图片,了解Go Channel的底层实现

董哥的黑板报

Go 后端 服务端 操作系统 runtime

今日国庆,祝福祖国!【文末超级福利】

图灵教育

读书 国庆节

存储优化--分区与冷热分离

喵叔

10月月更

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