【发布时间】:2017-03-24 13:34:00
【问题描述】:
使用 MVC5,我添加了视图逻辑来禁用基于模型中的值的数据输入。逻辑运行后,它会被现有的 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对象,并使用ViewData字典中的值(如果存在)覆盖您通常传递的 HtmlAttributes 对象吗? -
我没有使用 ViewData。
-
我知道您目前不是,但是当您将对象作为第二个参数传递给
@Html.EditorFor()时,值将存储在页面的ViewData对象中。换句话说,您可以在您的日期时间编辑器部分中执行ViewData["@class"](您可能需要仔细检查字典中的确切键是什么),您可以使用它来覆盖您的正常new { @class = "form-control datepicker" } -
这听起来像是一个解决方案,但我还没想好。更多代码会有所帮助。如果您能制定一个答案,将不胜感激。
-
让我知道该答案是否需要更多解释
标签: c# asp.net-mvc razor asp.net-mvc-5 mvc-editor-templates