如果禁用,核心MVC CheckBox将返回false

问题描述

如何保持复选框认为true和禁用?这样用户就不会取消选中它们,但是当我添加disabled”时,控件始终向模型对象返回false。

<div class="form-group">
    <div class="custom-control custom-checkBox">
        <input asp-for="HeaderSection" type="checkBox" name="HeaderSection" value="true" class="custom-control-input" disabled id="chkHeader" checked="checked">
        <label class="custom-control-label" for="chkHeader">Header and Static Message</label>
    </div>
    <div class="custom-control custom-checkBox">
        <input asp-for="ImageSection" type="checkBox" name="ImageSection" value="true" class="custom-control-input" disabled id="chkImages" checked="checked">
        <label class="custom-control-label" for="chkImages">Image for each section/ service</label>
    </div>
    <div class="custom-control custom-checkBox">
        <input asp-for="MapSection" type="checkBox" name="MapSection" value="true" class="custom-control-input" id="chkMaps">
        <label class="custom-control-label" for="chkMaps">Google Maps</label>
    </div>
</div>

解决方法

禁用的字段不会发布到服务器。您的复选框返回false,因为这是默认的布尔值

例如,您可以

  1. 将其设置为只读,而不是禁用
  2. 为禁用的复选框创建一个隐藏的输入,该输入将被发送到服务器 <input hidden name="ImageSection" value="true" />

如果该复选框保持禁用状态,并且应始终为true,则可以将其保留在前端,但是在服务器上需要的地方请传递默认值true。这样,您就不必担心有人是否会篡改发送到服务器的数据(当然,您应该已经进行了验证!),但是如果有关复选框的业务需求及其价值发生变化,它将增加额外的工作。必须由用户控制。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...