【问题标题】:Html.checkboxfor posting false value to controllerHtml.checkbox 用于向控制器发布假值
【发布时间】:2015-08-20 16:51:38
【问题描述】:
@Html.CheckBoxFor(m => m.Close, new { disabled = "disabled" }) 

上面的 html 帮助器方法生成下面的 html 代码。

   <input checked="checked" data-val="true" data-val-required="The Close field is required." disabled="disabled" id="Close" name="Close" type="checkbox" value="true">

<input name="Close" type="hidden" value="false">   

当我提交表单时,它只会发回错误的消息……有什么想法吗?我检查了提琴手中的回发值。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    禁用的控件不会回发。由于@Html.CheckBoxFor() 生成了一个复选框和一个默认值(false)的隐藏输入,因此只有隐藏的输入被回发,Close 的值为 false。

    【讨论】:

    • 啊,谢谢,您知道将只读/禁用复选框提交回控制器的任何方法吗?
    • 因为它不可编辑,所以使用@Html.hiddenFor(m =&gt; m.Close) 以便它回发,如果您还想要该属性的视觉指示,请添加@DisplayFor(m =&gt; m.Close)
    • @DisplayFor(m => m.Close) 完成了这项工作
    【解决方案2】:

    这是您可以在控制器中检查是否为假的方法:

    var isChecked = Request.Form["Modelname"];
    

    【讨论】:

      猜你喜欢
      • 2016-03-26
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      相关资源
      最近更新 更多