2009-08-25 6 views
0

Je ne suis pas sûr que cela soit possible, mais je veux voir les objets créés par mes ModelBinders autres que de les passer comme paramètres à mes méthodes Action.Accéder aux objets créés par ModelBinders dans ActionFilters

I.e. Je veux enregistrer un FooBinder et un BarBinder, puis regarder un Foo dans la méthode suivante

public void MyAction(Bar bar) 

ou même idéalement dans un ActionFilter.

Est-ce possible?

Répondre

2

Pour accéder à ceci:

public ActionResult FizzAction(object foo) // <-- 
    {...} 

utiliser dans votre filtre:

public class BarFilter : ActionFilterAttribute 
{ 
public override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    var foo = filterContext.ActionParameters["foo"]; 
    //do whatever you want with it 
} 
} 

EDIT:

Pour ActionMethodSelectorAttribute cela pourrait aider:

public class foo : ActionMethodSelectorAttribute 
    { 
     public override bool IsValidForRequest 
      (ControllerContext controllerContext, MethodInfo methodInfo) 
     { 
      ValueProviderResult valueResult; 
      controllerContext.Controller.ValueProvider 
       .TryGetValue("foo", out valueResult); 
     } 
    } 

Découvrez this blog post par K. Scott Allen.

Aucune garantie - ne l'ai pas utilisée par moi-même - je viens de trouver à travers la fenêtre de la montre. :)

+0

Merci Arnis. C'est absolument la bonne réponse. Cependant, je viens de me rendre compte que ce n'est pas un ActionFilter auquel je veux accéder mais un ActionMethodSelectorAttribute. Je suppose que ce n'est pas possible ...? – Gaz

+0

un moment ... –

+0

Modifié mon message. J'espère que ça aide. –

Questions connexes