我正在尝试根据用户的权限动态禁用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但是保存仍然不起作用。
答案 0 :(得分:1)
禁用的字段不会被回发。如果您需要查看哪些控件被禁用,您可以使用JQuery启用它们,然后将它们发回,然后在表单中再次禁用它们。
答案 1 :(得分:1)
由于您位于else
区块中,因此您可以将文本框重命名为"EffectiveDate"
以外的其他内容,然后您将在此处发布隐藏字段,并且模型装订器将知道使用该值而不是禁用的文本框。