在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

代码检查过程中为什么需要涉及到编译呢?

华为云开发者联盟

开发 华为云 华为云开发者联盟 代码检查 企业号9月PK榜

龙蜥社区与您相约 2023 KubeCon

OpenAnolis小助手

开源 容器 云原生 龙蜥社区 kata

支持私有化部署的WorkPlus,助您构建定制化的即时通讯平台

BeeWorks

腾讯云数据库再获顶会认可,论文入选VLDB2023

极客天地

适合企业的跨隔离网文件摆渡的四种方式及优缺点

镭速

跨网文件交换 跨隔离网文件摆渡

一文了解企业如何实现文件自动化实时同步

镭速

文件同步

根据人类反馈进行强化学习的5大关键步骤

澳鹏Appen

大模型 数据训练 生成式AI LLM RLHF

开辟ICT新视野 直通华为云专家:一堂华为云Astro低代码启蒙课 ——华为云HCSD校园沙龙之西安站

云计算 软件开发 低代码 华为云

企业沟通平台私有部署,让沟通更高效数据更安全

BeeWorks

专业私有化视频会议软件,WorkPlus Meet助力企业构建高效协作的沟通平台

BeeWorks

如何选择适合企业的移动应用管理平台?

BeeWorks

SQL还是NoSQL?架构师必备选型技能

树上有只程序猿

nosql sql 业务

聚焦华为全联接大会:和鲸科技与华为携手助推交叉学科应用型数据科学人才培养

ModelWhale

华为 人才培养 数据科学 高等教育 交叉学科

2000字说清音视频在社交娱乐场景中的应用!

X2Rtc

音视频 RTC 社交娱乐 融合通信

打造次世代分析型数据库(四):几十张表关联?小Case!

腾讯云大数据

数据库

DeFi 集成:扩大加密货币交易平台开发的视野

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 区块拉开发

腾讯大牛耗时1个月整理的"JVM学习笔记"深入底层,面面俱到!

小小怪下士

Java JVM

Docker 入门教程(简明易懂、零基础篇)

程序员万金游

#运维 #后端 #docker

四问复合索引,让你的数据查询速度飞起

华为云开发者联盟

后端 华为云 图数据库 华为云开发者联盟 企业号9月PK榜

用智能文字识别技术赋能古彝文数字化之路

dvlinker

人工智能 深度学习 合合信息 古彝文 智能文字识别技术

企业即时通讯解决方案,WorkPlus助力高效沟通与协作

BeeWorks

企业即时通讯

2023-09-27:用go语言,在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始, 并尝试进行 k 次移动。行和列是 从 0 开始 的,所以左上单元格是 (0

福大大架构师每日一题

福大大架构师每日一题

软件测试/测试开发丨探索AI与测试报告的完美结合,提升工作效率

测试人

人工智能 程序员 软件测试 ChatGPT

Sovit2D组态设计 Web Scada烟气脱硫工艺流程

2D3D前端可视化开发

物联网 组态软件 工业控制 工业自动化 烟气脱硫

软件测试 | AI大模型应用开发实训营来啦~ 大模型学习资料免费领

测试人

人工智能 程序员 AI 软件测试 大数据模型

基于Java+vue开发的企业级人力资源管理系统

金陵老街

IM系统,WorkPlus如何成为企业即时通讯协作的首选?

BeeWorks

IM聊天系统

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