我有一個模型類,它具有AreDuesPaid
屬性,我只希望管理員能夠查看和編輯該屬性。除非用戶角色是管理員,否則防止自動構建屬性?
類看起來是這樣的:
public class ClubMember
{
[ScaffoldColumn(false)]
public int Id { get; set; }
[Display(Name = "First Name")]
[Required(ErrorMessage = "First name is required")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[Required(ErrorMessage = "Last name is required")]
public string LastName { get; set; }
[Display(Name = "Email Address")]
[DataType(DataType.EmailAddress)]
public string EmailAddress { get; set; }
[DataType(DataType.PhoneNumber)]
[Display(Name = "Phone Number")]
public string PhoneNumber { get; set; }
[Authorize(Roles="Administrator")] // error: this can only be used for methods
public bool AreDuesPaid{ get; set; }
}
我想也許我可以用Authorize
屬性,但編譯器告訴我這僅僅是方法。
所以,我想知道,如何使用DisplayForModel()
和EditorForModel()
來自動支架視圖時如何限制對特定屬性的訪問?
我需要建立完全獨立的觀點和看法模型或有更簡單的方法嗎?
但我認爲這使得它不可能使用'DisplayForModel()'和'EditorForModel()'。 – devuxer 2011-04-26 20:24:20
我還必須非常小心在視圖中隱藏的東西,因爲惡意用戶可能仍然張貼從「保護」性能數據並將它們寫入您的課程在保存之前。權限不屬於UI代碼。 – 2011-04-28 15:34:27
@丹尼,你得詳細解釋一下。 HttpPost的'ActionResult'通常用'[Authorize]'屬性修飾,或者是一個自定義的屬性,它允許你指定哪些角色應該被允許調用'ActionResult'。 – ebb 2011-05-03 18:22:22