2010-08-13 5 views
1

Existe-t-il un moyen d'obtenir l'action et de lire les attributs pendant la phase de liaison du modèle?Obtention de l'action pendant la liaison du modèle

Le scénario est le suivant:

J'ai un set-up de modèle de liaison par défaut pour un certain type de données, mais en fonction de la façon dont il est utilisé (qui est contrôlé par un attribut sur l'action) I besoin d'ignorer un ensemble de données.

Je peux utiliser RouteData sur le contexte du contrôleur et voir le nom de l'action, que je peux utiliser pour obtenir les données, mais je me demandais si cette information est déjà disponible.

De plus, si l'action en question est une question asynchrone, ils seraient plus impliqués dans le traitement à la recherche vers le haut ...

+0

duplication possible de [Asp.NET MVC ModelBinder, obtenir la méthode d'action] (http://stackoverflow.com/questions/6198155/asp-net-mvc-modelbinder-getting-action-method) – Jeremy

Répondre

0

Vous pourriez marcher sur la trace de la pile et trouver la première méthode qui retourne un ActionResult et tirer les attributs:

StackTrace st = new StackTrace(); 
    for (int i = 0; i < st.FrameCount; i++) 
    { 
     StackFrame frame = st.GetFrame(i); 
     MethodBase mb = frame.GetMethod(); 
     if (mb is MethodInfo) 
     { 
      MethodInfo mi = (MethodInfo)mb; 
      if (typeof(ActionResult).IsAssignableFrom(mi.ReturnType)) 
      { 
       object[] methodAttributes = mb.GetCustomAttributes(true); 
       object[] objectAttributes = mb.DeclaringType.GetCustomAttributes(true); 
      } 
     } 
    } 

Cela ne fonctionnera que si vous appelez UpdateModel après que l'action a été appelée pas lorsque le modèle est lié avant d'atteindre la méthode d'action.

+0

Malheureusement, il faudrait travailler lorsque le modelbinder est appelé dans le cadre de la construction des paramètres d'une action. – Kieron

Questions connexes