我有一个包含集合的模型。我想将每个人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手动构建帖子,因为它包括上传文件。
答案 0 :(得分:2)
There is an overload of EditorFor
有三个参数:expression
,templateName
和htmlFieldName
。如果为null
提供表达式templateName
(从而告诉帮助程序以通常的方式解析编辑器模板),并为htmlFieldName
提供空字符串,则应该呈现没有Elements[0].
前缀。
<%=Html.EditorFor(m => m.Elements[i], null, string.Empty)%>
答案 1 :(得分:1)
您可以使用局部视图解决此问题。如果您将EditorFor
移至部分视图(以ElementModel
作为模型),则不会生成[0]
括号。