写点什么

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

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

关注

评论

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

Swoole 定时器能实现毫秒级任务调度,你敢相信吗?

CRMEB

案例分享|一键式自动监测,跨境电商平台的业务转型模板

博睿数据

博睿数据 数据链DNA

Github上都在疯找的阿里内部“全栈技能修炼”终于来了

爱好编程进阶

Java 程序员 后端开发

JAVA为什么需要注解?

源字节1号

GitHub成功收获87

爱好编程进阶

Java 程序员 后端开发

Github标星28K+,这款可视化的对象存储服务真香

爱好编程进阶

Java 程序员 后端开发

Dropzone

爱好编程进阶

Java 程序员 后端开发

GitHub上最牛逼的Java教程,标星yyds:算法

爱好编程进阶

Java 程序员 后端开发

秒云助力上海金融信息技术应用创新联合攻关基地正式上线信创容器云平台

MIAOYUN

云原生 信创 智能运维 一云多芯解决方案

大数据培训HBase读写性能优化的详解

@零度

大数据 HBase

Docker:第二章:部署项目

爱好编程进阶

Java 程序员 后端开发

火山引擎入选“2022 中国边缘计算20强”榜单

火山引擎边缘云

边缘计算

HarmonyOS 94个JS/eTS开源组件首发上新,肯定有你要用的一款!

HarmonyOS开发者

HarmonyOS ArKUI 3.0

直播预告丨Hello HarmonyOS进阶课程第二课——计算机视觉

HarmonyOS开发者

HarmonyOS 图形图像 视觉开发

Hadoop05【命令操作】

爱好编程进阶

Java 程序员 后端开发

Apriori算法详解

爱好编程进阶

Java 程序员 后端开发

Builder构建者模式,将复杂对象的创建过程与其表示分离,活学活用才是王道

爱好编程进阶

Java 程序员 后端开发

Byte和bit

爱好编程进阶

Java 程序员 后端开发

七大章节解读「中台」的前世今生

菜根老谭

中台 中台架构

TASKCTL分布式任务调度平台-流程控制原理

敏捷调度TASKCTL

程序员 DevOps 分布式 大数据运维 TASKCTL

十年磨一剑|沃趣数据库云产品战略首发

沃趣科技

云原生 公有云 私有云 数据库云 沃趣科技

C++std命名空间和头文件详解

爱好编程进阶

Java 程序员 后端开发

Day308

爱好编程进阶

Java 程序员 后端开发

Flink与Spark Streaming在与kafka结合的区别!

爱好编程进阶

Java 程序员 后端开发

GC:你要用什么方式把我丢掉?

爱好编程进阶

Java 程序员 后端开发

如何开发 LAXCUS 分布式应用软件(二):基本构成

LAXCUS分布式操作系统

集群架构 并行计算 分布式操作系统 分布式应用

时序数据库为万物互联打下坚实的基石

华为云开发者联盟

数据仓库 物联网 时序数据库 GaussDB 时序数据

CGBTN2110-DAY07总结复习

爱好编程进阶

Java 程序员 后端开发

Dubbo的超时和重试

爱好编程进阶

Java 程序员 后端开发

Hadoop 3

爱好编程进阶

Java 程序员 后端开发

ICT架构体系详细说明【3】

爱好编程进阶

程序员 后端开发

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