我有一个表单,在列表中有几个复选框项。我为这个列表准备了一个编辑器。它们在屏幕上显示得很好。但在提交时,选中的项目不会在模型中提交...
型号:
public class ContactUsersModel : BaseModel
{
public IList<FilterCheckModel> PreviousVisitors { get; set; }
}
public class FilterCheckModel : BaseModel
{
public string Name { get; set; }
public string Value { get; set; }
public bool IsChecked { get; set; }
}控制器:
IList<FilterCheckModel> prevVisitList = new List<FilterCheckModel>();
prevVisitList.Insert(0, new FilterCheckModel() { Name = "All previous visitors", Value = "0" });
prevVisitList.Insert(1, new FilterCheckModel() { Name = "Not visited in last month", Value = "1" });
prevVisitList.Insert(2, new FilterCheckModel() { Name = "Not visited for 1-3 months", Value = "2" });
prevVisitList.Insert(3, new FilterCheckModel() { Name = "Not visited for 3-6 months", Value = "3" });
prevVisitList.Insert(4, new FilterCheckModel() { Name = "Not visited for over 6 months", Value = "4" });
model.PreviousVisitors = prevVisitList;html:
<table>
<tr>
<th>
Previous visitors:
</th>
</tr>
@for (int i = 1; i < Model.PreviousVisitors.Count; i++)
{
@Html.EditorFor(model => model.PreviousVisitors[i], "FilterCheck", new { Index = i + 1})
}
</table>编辑:
<tr>
<td>
@Model.Name
</td>
<td>
@Html.CheckBoxFor(x => x.IsChecked)
@Html.HiddenFor(x => x.Value)
</td>
</tr>发布于 2013-01-15 19:35:55
找到了!
原因是在我的循环中,i= 1开始。这会因为某种原因导致问题。索引需要从0开始...
@for (int i = 1; i < Model.PreviousVisitors.Count; i++)所以我把这个改成了
@for (int i = 0; i < Model.PreviousVisitors.Count; i++)它成功了!
https://stackoverflow.com/questions/14321328
复制相似问题