我的模型视图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对象。
答案 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;从你的对象。