1

我知道关于 ASP.NET MVC 中的复杂模型绑定也有人问过类似的问题,但我遇到了绑定问题,因为 POST 上没有足够的前缀,我想知道是否有简单的解决方案。

我有一个看起来像这样的视图模型:

public class ViewModel<Survey, Contact>
{
    public Survey Model { get; set; }
    public Contact Model2 { get; set; }
}

然后我有一个像这样的动作方法接受 POSTed

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.Emailmodel.Model.Email但我试图避免创建自定义模型绑定器。

在那儿

  1. 我可以在视图中进行设置以更改使用@Html.EditorFor类型化视图助手在视图中呈现的所有字段的名称?
  2. 我可以使用操作上的 Bind 属性进行更改,以使其默认绑定到该对象?

答案可能是“构建一个自定义活页夹”,但我只是想在解决这个问题之前提出这个问题。

谢谢您的帮助。此致,

哈尔

4

1 回答 1

2

您可以使用自定义 HtmlFieldPrefix 传递自定义 viewdata 来查看。使用助手渲染的每个控件都将具有该前缀。

ViewData.TemplateInfo.HtmlFieldPrefix = "prefix here";

看看这个:强制 EditorFor 在视图中使用类名作为输入项的前缀?

于 2013-01-10T18:02:24.773 回答