QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

聊聊一个普通程序员在520这天的心态

后台技术汇

520 单身福利

低代码/无代码和简单API

YonBuilder低代码开发平台

低代码

爱情从来都不是简单的事

阿泽🧸

520单身福利

Flink的程序结构

大数据技术指南

flink 5月日更

🚄【Redis 干货领域】帮你完全搞定Cluster原理(架构篇)

码界西柚

redis redis集群 5月日更 redis架构

学习笔记之:05 | 数组:一秒钟,定义 1000 个变量

Nydia

学习

分布式锁

邱学喆

分布式锁 redis分布式锁 zookeeper分布式锁

活性炭能去甲醛吗?

小天同学

科普 5月日更 活性炭

Mac电脑:安装cnpm(补充步骤)

三掌柜

5月日更

.Net Core Excel导入导出神器Npoi.Mapper

yi念之间

C# .net core npoi

梯度下降法 - DAY12

Qien Z.

5月日更 过拟合 梯度下降法

打破固有思维(十六)

Changing Lin

5月日更

翻译:谁将在AI中赚钱?by Simon Greenman John 易筋 ARTS 打卡 Week 48

John(易筋)

ARTS 打卡计划

拿金钱考验人性|靠谱点评

无量靠谱

ArrayList与LinkedList性能大PK

Damon

java基础 5月日更

华仔训练营模块4作业

方堃

可以学习一下安全方面的知识

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

分布式锁中的王者方案 - Redisson

悟空聊架构

redis 分布式 分布式锁 redisson

【LeetCode】增长的内存泄露Java题解

Albert

算法 LeetCode 5月日更

kube-controller-manager之PV Cotroller源码分析

良凯尔

Kubernetes 源码分析 Ceph CSI

Node.js使用数据库LevelDB:超高性能kv存储引擎

devpoint

nodejs leveldb

网络攻防学习笔记 Day22

穿过生命散发芬芳

5月日更 网络攻防

设计千万级学生管理系统的考试试卷存储方案

贯通

架构实战营

虽不能至,心向往之|靠谱点评

无量靠谱

感恩父母

若兮

520 单身福利

多线程 VS 多进程(三)

若尘

多线程 Python编程 5月日更

NLog整合Exceptionless

yi念之间

.net core exceptionless nlog

WebContainers介绍:如何在浏览器运行原生的Nodejs

代码先生

大前端 webassembly 技术创新 WebContainers StackBlitz.com

架构实战营 模块四作业

netspecial

架构实战营

加油!未来的每一天

Sherry

520单身福利 520 单身福利

Python数据科学基础-Pandas介绍

五分钟学大数据

数据科学 5月日更

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