在 mvc 中禁用复选框不会将值提交到数据库

Disabling checkbox in mvc does not submit values to database

是不是如果复选框被禁用,值就不会提交到数据库?我禁用了一个复选框,这样即使用户没有在表单的其余部分输入任何值,也至少会提交一个值。但是当我点击提交按钮时,数据库中没有条目。请帮忙

<table class="table-bordered">
<tr>
    <td colspan="2">
        @Html.CheckBoxFor(m => m.isUsed, new { @disabled="disabled"})
    </td>
</tr>
<tr>
    <td>
         @Html.TextBoxFor(m => m.FirstName, @Model.isUsed ? (object)new { @class = "form-control" } : new { @class = "form-control", @disabled = "disabled" })
        @Html.ValidationMessageFor(m => m.FirstName)
    </td>
</tr>

它不会submit/pick 禁用元素的值。您在这里可以做的是添加一个强类型隐藏字段,它将保存 属性 的值。模型活页夹将完成剩下的工作,即

@Html.HiddenFor(m => m.isUsed)
// instead of..
@Html.CheckBoxFor(m => m.isUsed, new { @disabled="disabled"})

这样 Model.isUsed 将在提交表单时具有其值。

您必须在提交表单之前删除 'disabled' 属性。 假设你的表单id是'TestForm'那么,

$('#TestForm').submit(function() {
        $('#CheckBoxId').removeAttr('disabled');
    });

另一种在不增加前端页面开销的情况下处理此问题的方法是仅对相应的后端参数使用默认值 false/0。这样一来,您就不会关心该值是否已发布(取决于当然取决于您的应用架构)。

即如果它未被选中(因此未发布),它最终会在后端返回 false。如果已检查并发布,它将覆盖后端的 false/0 值。