首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HttpPost上将嵌套模型与MVC3绑定

在HttpPost上将嵌套模型与MVC3绑定
EN

Stack Overflow用户
提问于 2011-09-25 20:36:57
回答 2查看 1.9K关注 0票数 4

我是MVC3的新手。

我在一个表单上有一个提交按钮,我想绑定一个有2-3个嵌套的对象模型的模型,里面有很多属性。

有没有办法在不使用EditorFor的情况下绑定这些嵌套对象;这样当我提交表单时,我将在返回的模型上采用ActionResult(对象模型),嵌套的对象模型及其值,而不必在html后面实现隐藏值或表单?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-25 20:41:53

基本上,你需要足够的值来再次识别你的模型。因此,您可以使用隐藏字段中的Id和您想要更改的所有属性。要重新创建模型,只需通过基本参数将Id和更改后的值传递给控制器操作,或者编写model-binder - IMHO,这是处理这些情况的最佳方法。

票数 0
EN

Stack Overflow用户

发布于 2011-09-25 22:36:55

DefaultModelBinder是按照约定工作的,所以要让它工作,表单域必须遵循MVC命名约定。

如果不想使用EditorForModel创建表单,则必须为每个字段实现自己的命名约定,并为每个元素设置ViewData.TemplateInfo.HtmlFieldPrefix。然后,您将必须创建一个自定义ModelBinder来获取返回的表单,并根据您的命名约定绑定到您的模型。

请注意,这会在MVC3中产生一些其他问题,其中最重要的是对DropDownLists和其他一些项的隐式验证的呈现可能会失败。

对于一般情况,最好在视图中使用EditorForModel,并使用MVC的现有约定。可以创建特定于每个嵌套模型的视图。Brad Wilson很好地概述了this article中的过程。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7545515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档