禁用mvc中的复选框不会向数据库提交值

时间:2015-10-01 05:24:25

标签: asp.net-mvc checkbox html-helper mvc-editor-templates

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

<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>

3 个答案:

答案 0 :(得分:3)

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

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

这样Model.isUsed在提交表单时就会有价值。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

即如果未选中(因此未发布),则在后端将以false结束。如果已检查并发布,则它将覆盖后端的false / 0值。