2009-07-29 6 views
3

Je suis en train de régler le Autorisez pour mes contrôleurs peuvent effectuer les opérations suivantes:Autorisez attribut en utilisant une expression constante

[Authorize(Roles = "Approver")] 

Comment jamais les noms des rôles sont détenus dans la base de données, et donc je voudrais essayer de faire ce qui suit:

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

mais je reçois l'erreur suivante:

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

Une y est-ce que c'est ca?

Répondre

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(); 
    } 
} 

Vous obtiendrez la valeur des biens comme celui-ci Si un "employé" au-dessus

[UniqueAttribute(Identifier = "Id")] 
0

est un rôle connu, veuillez définir la constante de chaîne dans votre application et assurez-vous que le rôle stocké dans la base de données peut être mappé sa valeur au besoin.

Questions connexes