我想實現一個要求,允許我根據用戶角色或其他業務邏輯來更改html控件的狀態。例如,某些用戶不應該能夠編輯某個模型屬性,或者在某些情況下,我甚至不希望控件呈現給html DOM。我可以在操作過濾器中修改模型元數據嗎?
在HTML幫助程序中,元數據可以告訴幫助程序是否呈現控件或可以使其成爲只讀/禁用。我不想在這裏重新發明輪子,我只想通過在運行時基於邏輯在動作過濾器中更改元數據來使用已有的元素。我不希望這種邏輯在我看來,我不想爲每個單獨的html控件創建自定義助手,如果我不必..
我想要做的是創建一個操作過濾器來處理評估業務層中的邏輯規則,然後更改給定model.property的元數據。
問題是,我對元數據的修改似乎沒有將其添加到視圖中。它幾乎看起來像我對動作過濾器中的元數據的更改不是通過引用,所以我不修改用於視圖的同一個實例?
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
var trans = filterContext.Controller.ViewData.ModelMetadata.Properties.Where(e => e.PropertyName == "Transaction").FirstOrDefault();
trans.DisplayName = "Show FOO!";
}
我在做什麼錯?
謝謝,經過一些試驗和錯誤後我發現了這一點。我最終做的是創建一個自定義的元數據提供程序,它允許我根據需要修改屬性。 – JBeckton