写点什么

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

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

关注

评论

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

LeetCode题解:20. 有效的括号,栈,JavaScript,详细注释

Lee Chen

大前端 LeetCode

合约跟单交易系统开发,交易所一键跟单模式搭建

13530558032

前端训练营(15)-动画

罗思雨

大前端

一周信创舆情观察(8.10~8.23)

统小信uos

温故知新——Spring AOP

牛初九

spring aop ioc

CUDA,cuDNN,pytorch 在win10环境下的下载安装

Qx

教程 PyTorch

数据隔离、访问授权,用好大数据为什么这么难?

华为云开发者联盟

大数据 数据湖 华为云 DLI 数据隔离

爱技术爱折腾,想要编程到60岁--我的十年

盛安德软件

有了MDL锁视图,业务死锁从此一目了然

华为云开发者联盟

MySQL 数据库 华为云 MDL锁视图 元数据

Docker 之常见应用部署

哈喽沃德先生

Docker 容器 微服务

第 0 期架构师训练营第 4 周作业 1

fujin

netdata安装到redhat7.6最简手册

橙子冰

netdata

架构重构之禅

ninetyhe

Java 架构设计 代码重构

奈学:Executor线程池的概述

古月木易

线程池 Executor

浅谈业务系统设计哲学

滴滴普惠出行

Docker 镜像构建之 docker commit

哈喽沃德先生

Docker 容器 微服务

白板技术实践:在线教育平台如何保障课件数据安全

ZEGO即构

加密解密 OSS 鉴权

如何在3秒内打开一个网址

BabyKing

第 0 期架构师训练营第3周作业1

fujin

组合模式

XSKY星辰天合助力中国五矿打造政企办公新标杆

XSKY星辰天合

为什么中国出了这么多厉害的互联网公司,但没有自己设计过编程语言?

代码制造者

编程语言 低代码 企业信息化 零代码 编程开发

90%的开发都没搞懂的CI和CD!

禅道项目管理

ci DevOps 持续集成 持续交付 持续部署

技术揭秘:华为云DLI背后的核心计算引擎

华为云开发者联盟

大数据 spark 数据湖 华为云 DLI

永续合约交易系统开发方案,合约交易所源码搭建

13530558032

区块链钱包应用开发,数字货币钱包源码

13530558032

区块链承兑支付系统开发,USDT入金支付系统

13530558032

易观方舟Argo+CRM | 让企业数据发挥更大价值

易观大数据

实用!教学白板跨国低时延互动技术实现指南

ZEGO即构

OSS 全站加速 集群

第 0 期架构师训练营第 3 周作业2---总结

fujin

JAVA,.NET项目开发难上手?Learun敏捷开发框架解君愁

Learun

第 0 期架构师训练营第 4周作业 2--- 总结

fujin

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