【发布时间】:2013-01-11 02:08:01
【问题描述】:
我知道有人问过关于 ASP.NET MVC 中复杂模型绑定的类似问题,但我遇到了绑定问题,因为在 POST 上返回的前缀不足,我想知道是否有简单的解决方案。
我有一个看起来像这样的视图模型:
public class ViewModel<Survey, Contact>
{
public Survey Model { get; set; }
public Contact Model2 { get; set; }
}
然后我有一个像这样接受 POST 的操作方法
public ActionResult Survey(
string id, string id2, SurveyViewModel<Survey, Contact> model)
{
// code goes here...
}
在我的表单中,前两个 id 来自 URL 路由,然后我有表单代码(使用 @Html.EditorFor(x => x.Model.SurveyName) 或类似名称),生成的名称如下:
<input class="text-box single-line" id="Model_Email"
name="Model.Email" type="text" value="" />
如果我将名称从 Model.Email 更改为 model.Model.Email,则帖子有效,但我试图避免创建自定义模型绑定器。
有吗
- 我可以在视图中进行设置以更改使用
@Html.EditorFor类型化视图帮助器在视图中呈现的所有字段的名称? - 我可以使用操作上的 Bind 属性进行更改,以使其默认绑定到该对象?
答案可能是“构建一个自定义活页夹”,但我只是想在咬掉它之前提出这个问题。
感谢您的帮助。最好的问候,
哈尔
【问题讨论】:
-
您是否尝试过更改您的
Model属性的名称?当模型具有名为 Model 的属性时,模型绑定器会感到困惑。 -
同样,您是否尝试过在您的操作中重命名模型参数?
标签: asp.net-mvc asp.net-mvc-3 razor