无法在MVC页面加载时设置复选框

时间:2014-12-21 20:40:00

标签: asp.net-mvc razor checkbox

在我的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无效。

我出错的任何想法?

1 个答案:

答案 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'