在asp.net MVC中使用Html.CheckBox提交后出现该字符串未被识别为有效的布尔值错误,或从类型“System.String”到类型“System.Boolean”的参数转换失败。

错误例子:@Html.CheckBox("UserID",item.IsTrue,new{value=item.UserID})

这是由于MVC会在页面上生成<input id="UserID" name="UserID" value="100000" />和一个同名隐藏的<input name="UserID" type="hidden" value="false" />

在提交后,CheckBox会得到两个值("100000"和false),这就导致出现“System.String”到类型“System.Boolean”的参数转换失败。

解决方法:<input type="checkbox" id="UserID"  @(item.IsTrue ? "checked='checked'" : string.Empty) value="@item.UserID" />

04-15 20:43