5

我有一个包含以下代码行的视图:

//(DaysOfWeek is a bool[])
@Html.CheckBoxFor(m => m.Data.DaysOfWeek[0])

一开始是假的。当用户“选中”该框并返回时,它会返回一个真假值;

这是作为表单数据的一部分传回的内容

Data.DaysOfWeek[0]:true
Data.DaysOfWeek[0]:false

为什么这样做?

4

1 回答 1

6

这是因为如果未选中标准 HTML 复选框,则不会返回任何值。为了使这种烦人的行为更直观,该CheckBoxFor方法创建了一个复选框和一个具有相同名称的隐藏控件,其值为false,如下所示:

<input type="checkbox" name="myControl" value="True" /> My control
<input type="hidden" name="myControl" value="False" />

发布表单时您将看到的内容是:

False // checkbox unchecked
True,False // checkbox was checked

因此,要测试该框是否被选中,您应该使用Contains('True')

bool checkboxChecked = formCollection["myControl"].Contains("True");
于 2012-08-04T20:14:58.160 回答