如何将模型集合的单个元素发布到操作?

时间:2012-12-11 11:26:23

标签: c# asp.net-mvc asp.net-mvc-2

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

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手动构建帖子,因为它包括上传文件。

2 个答案:

答案 0 :(得分:2)

There is an overload of EditorFor有三个参数:expressiontemplateNamehtmlFieldName。如果为null提供表达式templateName(从而告诉帮助程序以通常的方式解析编辑器模板),并为htmlFieldName提供空字符串,则应该呈现没有Elements[0].前缀。

<%=Html.EditorFor(m => m.Elements[i], null, string.Empty)%>

答案 1 :(得分:1)

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