我有一个模型类,它具有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