使用常量表达式授权属性

时间:2009-07-29 11:23:13

标签: c# asp.net-mvc

我正在尝试设置我的控制器的授权可以执行以下操作:

[Authorize(Roles = "Approver")]

如何在数据库中保存角色的名称,因此我想尝试执行以下操作:

[Authorize(Roles = Settings.Instance.RoleEmployee)]

但是我收到以下错误:

  

属性参数必须是常量表达式,typeof表达式   或属性参数类型

的数组创建表达式

有什么方法吗?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

public class UniqueAttribute : ValidationAttribute
{        
    public string Identifier { get; set; }

    public override bool IsValid(object value)
    {          
        // Get property value
        PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value);
        string identifierValue = properties.Find(this.Identifier,     true).GetValue(value).ToString();
    }
}

您将获得上述任何财产的价值

   [UniqueAttribute(Identifier = "Id")]

答案 2 :(得分:0)

如果"员工"是一个已知角色,然后在应用程序中定义此字符串常量,并确保在需要时可以将存储在数据库中的角色映射到此值。