2009-12-25 35 views
13

Si tiene un parámetro vinculado al modelo en un método de acción, ¿cómo puede obtener ese parámetro en un filtro de acción?Enlace de parámetros de 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 
    } 

} 

¿Hay alguna forma de obtener myCar sin pasar por las variables de forma?

+0

Aquí es un gran artículo que explica cómo acceder a ActionParameters con fines de autorización: http://www.joe-stevens.com/2010/ 08/19/asp-net-mvc-authorize-attribute-using-action-parameters-with-the-actionfilterattribute/ –

Respuesta

11

No estoy seguro sobre OnActionExecuted pero puede hacerlo 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

No creo que puedas usar ActionFilter allí, es ActionFilterAttribute. ¿También dónde obtuvo la propiedad ActionParameters en ActionExecutedContext? –

+0

Gracias, es ActionFilterAttribute: tienes razón. No he notado que la pregunta es sobre OnActionExecuted. –

+0

Gracias chicos. Edité mi pregunta original para indicar ActionFilterAttribute. – Shlomo

Cuestiones relacionadas