2009-12-25 7 views
13

Si vous avez un paramètre lié à un modèle dans une méthode d'action, comment pouvez-vous accéder à ce paramètre dans un filtre d'action?Liaison de paramètre ASP.NET MVC ActionFilter

[MyActionFilter] 
public ActionResult Edit(Car myCar) 
{ 
    ... 
} 

public class MyActionFilterAttribute : ActionFilterAttribute 
{ 
    public void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     //I want to access myCar here 
    } 

} 

Est-il possible d'obtenir myCar sans passer par les variables de formulaire?

+0

Voici un excellent article expliquant comment accéder ActionParameters à des fins d'autorisation: http://www.joe-stevens.com/2010/ 08/19/asp-net-mvc-authorize-attribut-utilisation-action-paramètres-avec-the-actionfilterattribute/ –

Répondre

11

ne suis pas sûr OnActionExecuted mais vous pouvez le faire en OnActionExecuting:

public class MyActionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // I want to access myCar here 

     if(filterContext.ActionParameters.ContainsKey("myCar")) 
     { 
      var myCar = filterContext.ActionParameters["myCar"] as Car; 

      if(myCar != null) 
      { 
       // You can access myCar here 
      } 
     } 
    } 
} 
+1

Je ne pense pas que vous puissiez utiliser ActionFilter ici, c'est ActionFilterAttribute. Où avez-vous également obtenu la propriété ActionParameters sur le ActionExecutedContext? –

+0

Merci, c'est ActionFilterAttribute - vous avez raison. Je n'ai pas remarqué que la question concerne OnActionExecuted. –

+0

Merci les gars. J'ai modifié ma question initiale pour indiquer ActionFilterAttribute. – Shlomo

Questions connexes