我正在尝试以如此简单的形式发送一些数据。我的表单有一个复选框列表,每个框旁边都有一个人的姓名和角色。我想要做的:恢复该框已被选中的人员列表。我已经创建了一个模型来做到这一点:
public class CoupleModel
{
public Boolean isSelected { get; set; }
public String name {get; set;}
public String login { get; set; }
public String role { get; set; }
public CoupleModel(String name, String login, String role)
{
this.name = name;
this.login = login;
this.role = role;
this.isSelected = false;
}
public CoupleModel()
{
this.isSelected = false;
}
}
我的表格如下所示:
@using (Html.BeginForm("CreateInventory", "Home"))
{
@Html.Action("PersonListInventory")
<button type="submit" class="btn btn-primary">Validate creation</button>
}
和它链接的 PartialView 是这个:
@model List<MyApp.Models.CoupleModel>
<table class="table table-striped table-bordered"">
<tbody>
@for (int i = 0; i < Model.Count(); i++) {
<tr>
<td>
@Html.EditorFor(m => m[i].isSelected)
</td>
<td>
@Html.EditorFor(m => m[i].name)
</td>
<td>
@Html.EditorFor(m => m[i].role)
</td>
</tr>
}
</tbody>
</table>
然后,在我的控制器视图中,我只想列出已选中该框的人员的姓名:
[HttpPost]
public ActionResult CreateInventory(List<CoupleModel> model)
{
String res = "";
foreach (var item in model) {
if (item.isSelected)
{
res += "selected : " + item.login + "<br>";
}
else
{
res += item.login + "<br>";
}
}
ViewBag.Res = res;
return View();
}
但是只设置了“isSelected”部分,也就是说登录时显示时总是空白的。为什么没有设置?我需要做一些特殊的绑定吗?