2

我有一个包含集合的模型。我想将每个人包装EditorFor在一个表单中,该表单以单个元素作为参数发布到一个动作。IE:

class ModelWithCollection
{
    List<ElementModel> Elements { get; set; }
}

class ElementModel
{
    int Field { get; set; }
}

public ActionResult ElementAction(ElementModel viewModel)
{

}

但是,我viewModel没有填充属性。我可以理解这一点,因为编辑器将 id 呈现为Elements[0].Field. 宁愿在哪里行动就好了Field

我怎样才能解决这个问题?


我不认为我可以使用 jquery 或其他东西手动构建帖子,因为它包括上传文件。

4

2 回答 2

2

有一个重载EditorFor需要三个参数:expressiontemplateNamehtmlFieldName。如果您提供表达式nullfor templateName(从而告诉帮助程序以通常的方式解析编辑器模板)和一个空字符串 for htmlFieldName,这应该呈现不带Elements[0].前缀的字段。

<%=Html.EditorFor(m => m.Elements[i], null, string.Empty)%>
于 2012-12-11T11:42:28.603 回答
1

您可以使用局部视图解决此问题。如果您移动EditorFor到局部视图(使用ElementModel模型),则不会生成[0]括号。

于 2012-12-11T11:45:44.497 回答