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