如何获取表单中的复选框值的最佳方法?

时间:2014-03-25 13:14:48

标签: c# asp.net-mvc

在我看来:

<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;在......

3 个答案:

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