受控禁用时,MVC3更改不保存

时间:2012-03-27 14:58:14

标签: jquery .net asp.net-mvc-3 permissions form-helpers

我正在尝试根据用户的权限动态禁用MVC3控件。它工作正常,并在进行更改时自动设置为默认值。但是在单击提交按钮后保存时,不保存任何更改。这仅在禁用控件时发生。

* 更新 *

<div class="editor-field">
                    @if (!disabled)
                    {

                        @Html.TextBox("EffectiveDate", Model.EffectiveDate.FormatShortDate(), new { @class = "date" })
                    }
                    else
                    {
                        @Html.TextBox("ReadOnlyEffectiveDate", Model.EffectiveDate.FormatShortDate(), new { @class = "date", @disabled = "disabled" })
                        @Html.HiddenFor(m => m.EffectiveDate)
                    }
                    @Html.ValidationMessageFor(model => model.EffectiveDate)
                </div>

jqueryscript

$("#DistributionId").change(function () {
            var currentYear = (new Date).getFullYear();
            $("#TermDate").val("12/31" + currentYear);
            $("#EffectiveDate").val("01/01/" + (currentYear + 1));
            $("#ReadOnlyEffectiveDate").val("01/01/" + (currentYear + 1));
            $("#EffectiveDate").change(); 
        });

#ReadOnlyEffectiveDate的值没有更新#EffectiveDate但是保存仍然不起作用。

2 个答案:

答案 0 :(得分:1)

禁用的字段不会被回发。如果您需要查看哪些控件被禁用,您可以使用JQuery启用它们,然后将它们发回,然后在表单中再次禁用它们。

答案 1 :(得分:1)

由于您位于else区块中,因此您可以将文本框重命名为"EffectiveDate"以外的其他内容,然后您将在此处发布隐藏字段,并且模型装订器将知道使用该值而不是禁用的文本框。