使用MVC5我已经添加了视图逻辑来禁用基于模型中的值的数据输入。逻辑运行后,它被现有的EditorTemplate逻辑覆盖 - 该字段保持启用状态。我怎样才能让我的禁用逻辑工作?这种观点的逻辑首先运行:如何防止重写View逻辑的EditorTemplate逻辑?
<div>
@{
object attributes = new { @class = "form-control", @disabled = "disabled", @readonly = "readonly" };
if (Model.OnHold.Number == 0) {
attributes = new { @class = "form-control datePicker" };
}
@Html.EditorFor(model => model.OnHold.DateIssued, attributes);
}
</div>
然后冲突EditorTemplate代码:
@model DateTime
@Html.TextBox(string.Empty, @Model.ToString("MM/dd/yyyy"), new { @class = "form-control datepicker" })
你们能不能看看你的DateTime编辑器中查看'ViewData'对象,并覆盖HtmlAttributes如果它存在,通常会将其与'ViewData'字典中的值一起传递的对象? – Bwolfing
我没有使用ViewData。 – DeveloperDan
我知道你现在不是,但当你传递一个对象作为第二个参数给'@ Html.EditorFor()'时,这些值就存储在页面的ViewData对象中。换句话说,你可以在你的日期时间编辑器中使用'ViewData [“@ class”]'(你可能需要仔细检查字典中的确切键是什么),你可以用它来覆盖你的普通'new {@class =“form-control datepicker”}' – Bwolfing