10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

2022中国低代码十大发展趋势,市场规模预计达42.6亿

J2PaaS低代码平台

低代码 低代码开发 J2PaaS

酒店资产管理系统解决方案

低代码小观

CRM 企业管理系统 CRM系统 企业管理工具 企业管理软件

重庆华美:用宜搭实现全流程管理上云,节约超百万研发成本

一只大光圈

前端 阿里 低代码 数字化转型 钉钉宜搭

虎年前迎来脑科学新锐:脑虎科技的创生故事

脑极体

模块九作业-设计电商秒杀系统

deng

架构实战营

重磅功能!Apache APISIX 拥抱 WASM 生态

API7.ai 技术团队

开源 云原生 Wasm Apache APISIX

VuePress 博客优化之开启 HTTPS

冴羽

Vue 前端 博客 vuepress 博客搭建

Tengine + BabaSSL ,让国密更易用!

SOFAStack

密码学 tengine 国密 BABASSL

用 SwiftUI 实现一个开源的 App Store

37手游iOS技术运营团队

swift appstore SwiftUI App榜单 App免费榜

网络安全——内网渗透完整流程

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

元宇宙时代:银行如何探索数字化转型

CECBC

组件发布效率提升15倍是怎么做到的——基于 Gradle 调度机制深度研究与优化

字节跳动终端技术

字节跳动 Gradle Andriod

一个cpp协程库的前世今生(十七)带时限的锁

SkyFire

c++ cocpp

Go语言gorm框架MySQL实践

FunTester

Go MySQL gorm FunTester

Flink 在字节跳动数据流的实践

字节跳动数据平台

大数据 flink 字节跳动 埋点 数据流

JuiceFS 即将发布 1.0 并调整开源许可

Juicedata

开源 文件系统 云存储

疫情下的口罩生活,演绎出了哪些心理剧场?

脑极体

实时音视频入门学习:开源工程WebRTC的技术原理和使用浅析

JackJiang

音视频 WebRTC IM 即时通讯IM

百度智能云以“3D+AI”技术,助力“三亿人上冰雪”

百度开发者中心

人工智能

「干货分享」如何做好应急响应工作?常见应急响应流程

H

网络安全 应急响应

关于A股投资--《香帅中国财富报告》摘录(3/100)

hackstoic

投资

LabVIEW实现PCB电路板坐标定位(实战篇—2)

不脱发的程序猿

机器视觉 图像处理 LabVIEW PCB电路板坐标定位

2022 起始篇

万万

专有云运维如何更快、更准、更稳?丨智能运维

百度大脑

人工智能

金融小程序风险如何控制,WeTest小程序质量专项方案一步到位

WeTest

不优雅的 React Hooks

CRMEB

金融云原生漫谈(五)|如何打造更适合云原生的数据存储方案?

York

云原生 数据存储

龙蜥利器:系统运维工具 SysAK的云上应用性能诊断 | 龙蜥技术

OpenAnolis小助手

开源 运维

一周信创舆情观察(1.4~1.9)

统小信uos

不是私密链接,如何继续前往?

BUG侦探

https HSTS 劫持

ORTC与SIP融合通信服务架构

安第斯智能云

音视频 RTC 流媒体

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