开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

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

关注

评论

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

《大厂面试》之JVM篇21问与答

钟奕礼

Java java程序员 java面试 java编程

Wallys/ industrial mini pcie card/2x 2 5G /High power Radio card

Cindy-wallys

QCA9882 2x 2 5G high power

MyBatis 延迟加载代码详解

千锋IT教育

让 Serverless 更普惠,阿里云函数计算 FC 宣布全面降价,最大幅度达 37.5%

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

深度解读|NebulaGraph x 阿里云计算巢,云上构建超大规模图数据库

阿里云弹性计算

图数据库 计算巢

Apisix网关快速入门实践

IT巅峰技术

如何通过Java代码给Word文档添加水印?

在下毛毛雨

Java word 水印

让 Serverless 更普惠,阿里云函数计算 FC 宣布全面降价,最大幅度达 37.5%

Serverless Devs

阿里云 Serverless

PHP反序列化漏洞解析

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

谁能破解客户数字化困局?

ToB行业头条

3.1版本【HarmonyOS 第一课】正式上线!参与学习赢官方好礼>>

HarmonyOS开发者

HarmonyOS

【案例】数字化浪潮中,云科通明湖如何助力能源行业弯道超车?

通明湖

负载均衡

适合小白Web前端入门JS基础知识梳理汇总

千锋IT教育

阿里P8整理的新版手抄本,所有Java知识操作

钟奕礼

Java java程序员 java面试 java编程

Spring Bean的生命周期(详细解读)

千锋IT教育

日志异常检测准确率低?一文掌握日志指标序列分类

云智慧AIOps社区

深度学习 日志分析 时间序列 指标预测 日志异常

【计算讲谈社】第十二讲|数据中心那些事儿

大咖说

数据中心 碳中和

如何做好成熟完整的企业团队知识管理?

Baklib

团队管理 知识管理

银行APP用户体验外滩峰会圆满落幕!易观分析赋能用户体验体系,助力体验提升

易观分析

App 银行 易观

前端leetcde算法面试套路之回溯

js2030code

JavaScript LeetCode

mysql经典面试题

@下一站

MySQL 编程 dba 11月月更

Wallys/DR7915/MT7915/MT7975/industrial mini pcie card 2T2R

Cindy-wallys

MT7915 MT7975 / 2.4G&5G

Linux之用户管理、权限管理、程序安装卸载

C++后台开发

Linux 后端开发 linux开发 Linux服务器开发 C++开发

5分钟实现「视频检索」:基于内容理解,无需任何标签

Zilliz

人工智能 Towhee 视频检索

为什么你的敏捷总是不成功?

敏捷开发

开源共建 | Dinky 扩展批流统一数据集成框架 ChunJun 的实践分享

袋鼠云数栈

Baklib知识分享 | 搭建企业在线帮助中心的最佳攻略

Baklib

FAQ是什么?该如何编辑FAQ?

Baklib

国标解读|从关键信息基础设施安全国标看软件供应链安全

墨菲安全

SBOM 软件供应链安全

调用链路上千条,如何观测 Nacos 的运行状态

阿里巴巴云原生

阿里云 微服务 云原生 naocs

信息论与编码:信道编码的基本概念

timerring

11月月更 信息论

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