在我的MVC视图中,我有一个动态创建的复选框列表。
@foreach (var door in Model.Doors)
{
<input type="checkbox" id="@door.ID" name="DoorIds" value="door.ID"/>@Html.Label(door.DoorName);
}
我的模特 -
public virtual IList<int> assignedDoors { get; set; }
public int[] DoorIds { get; set; }
当我勾选一些复选框并按“保存”时,更改将提交到数据库。但是,我似乎无法确定如何在页面加载时检查所需的框?
如果我将以下代码放在HTML复选框行中,
checked="@Model.assignedDoors.Contains(@door.ID)" }
复选框被选中,但是当我按下Save时,我收到以下错误 -
值&#39; door.ID,door.ID&#39;对DoorIds无效。
我出错的任何想法?
答案 0 :(得分:3)
有2个问题
首先value="door.ID"
您忘记@
之前的door.ID
和第二,这段代码:
checked="@Model.assignedDoors.Contains(@door.ID)"
将始终选中复选框,而您需要执行以下操作: 例如:http://jsbin.com/xonaxaqigi/1/edit
@(Model.assignedDoors.Contains(door.ID) ? "checked='checked'": "")
因此您需要完全没有选中的属性或checked='checked'