在我看来:
<input type="checkbox" name="chb" value="True" checked="checked">
在我的控制器中:
[HttpPost]
public ActionResult Pesquisar(bool chb)
我没有勾选复选框时出错:
参数字典包含参数&#39; chb&#39;的空条目。 不允许可空类型的类型&#39; System.Boolean&#39;方法 &#39; System.Web.Mvc.ActionResult搜索(System.String,System.String, 布尔值)&#39;在......
答案 0 :(得分:2)
如果你宣布你的Pesquisar是一个可以为空的值会怎么样?
[HttpPost]
public ActionResult Pesquisar(bool? chbNull) {
var chb = chbNull ?? false;
// rest of routine as existing
}
这可能会解决您的问题,因为它听起来像是客户端以空值发送。
答案 1 :(得分:0)
@Html.Checkbox("chb", ...)
这将生成复选框输入以及同名的隐藏输入。取消选中该复选框后,将使用隐藏值来避免NullReferenceException。
答案 2 :(得分:0)
如果使用帮助Html.CheckboxFor(x =&gt; x.chb)或Html.EditorFor(x =&gt; x.chb)生成的代码将
<input type="checkbox" id="chb" name="chb" value="True" />
<input type="hidden" value="false" name="chb" />
如果未选中复选框,则只会在chb上提交隐藏字段,模型值将设置为false 否则,如果选中复选框,则提交两个字段,但MVC将true设置为chb值