【问题标题】:How the best way to get the checkbox value in a form?如何以最佳方式获取表单中的复选框值?
【发布时间】:2014-05-03 08:46:09
【问题描述】:

在我看来:

<input type="checkbox" name="chb" value="True" checked="checked"> 

在我的控制器中:

[HttpPost]
public ActionResult Pesquisar(bool chb)

未勾选复选框时的错误:

参数字典包含参数“chb”的空条目 不允许可空类型“System.Boolean”用于方法的类型 'System.Web.Mvc.ActionResult Search (System.String, System.String, Boolean)' in ...

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    @Html.Checkbox("chb", ...)

    这将生成复选框输入以及同名的隐藏输入。当复选框未选中时,隐藏值将用于避免 NullReferenceException。

    【讨论】:

      【解决方案2】:

      如果您将 Pesquisar 声明为可空值,会发生什么情况?

      [HttpPost]
      public ActionResult Pesquisar(bool? chbNull) {
          var chb = chbNull ?? false;
      
          // rest of routine as existing
      }
      

      这可能会解决您的问题,因为听起来客户端正在发送空值。

      【讨论】:

        【解决方案3】:

        如果你使用 helper Html.CheckboxFor(x => x.chb) 或 Html.EditorFor(x => x.chb) 会生成代码

        <input type="checkbox" id="chb" name="chb" value="True" /> 
        <input type="hidden" value="false" name="chb" />
        

        如果未选中复选框,则在 chb 模型值将设置为 false 时将仅提交隐藏字段 否则,如果选中复选框,则提交两个字段,但 MVC 将 true 设置为 chb 值

        【讨论】:

          猜你喜欢
          • 2013-12-03
          • 1970-01-01
          • 2013-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多