任何人都可以告诉我如何将所选相关隐藏字段值的列表传递给控制器。指定的字段返回值是布尔(真)。有超过100个列表项目。如果管理员选择(分配)列表并提交,它会将所有列表值传递给控制器并更新数据库。将所选相关隐藏字段值形式传递给控制器
这是我的看法页面CHTML代码:
@using (Html.BeginForm("CAssigned", "Orders", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@foreach (var item in Model)
{
@Html.HiddenFor(model => item.LocationId)
<td>
@Html.DisplayFor(modelItem => item.MapIcons)
@Html.HiddenFor(model => item.MapIcons,"MapIcons")
</td>
<td>
@Html.EditorFor(modelItem => item.Assigned)
@Html.HiddenFor(model => item.Assigned)
</td>
}
<input type="Submit" value="Select" />
}
我控制器
[HttpGet]
public ActionResult CAssigned()
{
var orders = db.Locations.ToList();
return View(orders);
}
[HttpPost]
public ActionResult CAssigned(IEnumerable<Location>)
{
return View();
}
HTML视图源
<input data-val="true" data-val-number="The field LocationId must be a number." data-val-required="The LocationId field is required." id="item_LocationId" name="item.LocationId" type="hidden" value="1" />
<td>
red-dot.png
<input Length="8" id="item_MapIcons" name="item.MapIcons" type="hidden" value="red-dot.png" /></td>
<td>
<input class="check-box" data-val="true" data-val-required="The Assigned to Courier field is required." id="item_Assigned" name="item.Assigned" type="checkbox" value="true" /><input name="item.Assigned" type="hidden" value="false" />
<input type="Submit" value="Select" />
<input id="item_Assigned" name="item.Assigned" type="hidden" value="False" />
<td>
您不能使用foreach循环绑定到集合(您正在生成与您的模型(无索引器)无关的重复'id'属性(无效html)和'name'属性。您需要为模型使用'for'循环或自定义'EditorTemplate'。无论如何,您为什么要为属性'Assigned'隐藏输入,因为您有一个n'EditorFor()'为同一个属性。你的POST方法参数需要是你的模型('public ActionResult CAssigned(IEnumerable)',因为这就是你的观点所基于的。 –
谢谢你的回放。@for(var i = 1; i
Rob
您的模型需要实现'IList'然后'for(int i = 0; i m [i] .LocationId ....}'这将产生'',''等。另请参考[this answer] (http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943)更多详细信息 –