我使用數據註釋和一些自定義模板生成了很多視圖。我可以根據條件顯示/隱藏包含數據註釋的視圖模型元素嗎?
public class Container
{
[HiddenInput(DisplayValue = false)]
public string Key { get; set; }
[Display(Name = "Full Name")]
[RequiredForRole("Editor"), StringLength(30)]
public string Name { get; set; }
[Display(Name = "Short Name")]
[RequiredForRole("Editor"), StringLength(10)]
public string ShortName { get; set; }
[Display(Name="Maximum Elements Allowed")]
[RequiredForRole("Admin")]
public int MaxSize { get; set; }
[Display(Name = "Components")]
public IList<Component> Components{ get; set; }
}
在的意見,我只是用@Html.DisplayForModel()
,@Html.EditorForModel
等
某些屬性必須以某種角色的用戶可編輯的,但隱藏了別人。正如你所看到的,我已經實現了一個自定義驗證屬性RequiredForRole
,它檢查一個值是否存在,但是隻有當前用戶具有某個角色。
我確實需要一個自定義顯示屬性,但由於DisplayAttribute
是密封的,這似乎不可能。
我想避免針對不同類型的用戶有很多不同的模板,或者開始推動誰能看到什麼看到視圖的邏輯。解決這個問題的最好方法是什麼?
在您的自定義模板,您使用DisplayFor或EditorFor助手? –
@RaphaëlAlthaus是的,但我沒有許多模型類型的自定義模板 - 他們只是使用標準的'生成'模板。 –