使用编辑器模板可以枚举mvc模型的表单

时间:2014-01-11 02:57:35

标签: asp.net-mvc-4

我的模型视图ViewSetup有一个编辑器模板。我使用模板的观点简化为

@model IEnumerable<ViewSetup>
@Html.EditorFor(s => s)

我的ViewSetup编辑器模板的表单提交如下:

using (Ajax.BeginForm("Edit", new AjaxOptions() { HttpMethod = "Post" }))
{   
    @Html.HiddenFor(p => p.TradingPartner.ID)
    <input type="submit" value="Save" />
}

所以基本上我需要为Enumerable的每个元素提交一个表单。但是我在表单提交方面遇到了问题。我处理帖子的控制器是:

public ActionResult Edit(ViewSetup formDataSent)
{
    formDataSent.Save();    
}

根据默认模型绑定,我为TradingPartner属性获取null,因为html中的名称是:

<input name="[0].TradingPartner.ID" type="hidden" value="1"/>

我需要的是只在每个元素上提交ViewSetup对象而不是数组。如果我可以删除名称中的索引部分,这可能对我有用。但我不确定如何在表单提交上获得ViewSetup对象。

2 个答案:

答案 0 :(得分:0)

我敢打赌,如果你的编辑器基于一个项目而不是一个项目列表,那么你将获得更大的灵活性。

@model IEnumerable<ViewSetup>

@foreach (var item in Model)
{
   @Html.EditorFor(modelItem => item.TradingPartner)
}

答案 1 :(得分:0)

我有同样的问题,为我解决的是:

@foreach (var item in Model)
{
   @Html.EditorFor(modelItem => item.TradingPartner, null, "")
}

EditorFor为空白的第三个属性将摆脱&#34; [0]&#34;从你的对象。