我有一个包含以下代码行的视图:
//(DaysOfWeek is a bool[])
@Html.CheckBoxFor(m => m.Data.DaysOfWeek[0])
一开始是假的。当用户“选中”该框并返回时,它会返回一个真假值;
这是作为表单数据的一部分传回的内容
Data.DaysOfWeek[0]:true
Data.DaysOfWeek[0]:false
为什么这样做?
我有一个包含以下代码行的视图:
//(DaysOfWeek is a bool[])
@Html.CheckBoxFor(m => m.Data.DaysOfWeek[0])
一开始是假的。当用户“选中”该框并返回时,它会返回一个真假值;
这是作为表单数据的一部分传回的内容
Data.DaysOfWeek[0]:true
Data.DaysOfWeek[0]:false
为什么这样做?
这是因为如果未选中标准 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");