2011-08-20 14 views
5

estoy teniendo una acción y atributo de la siguiente manera, He montado sobre-OnActionExecuting y quiera leer atributo en ese métodolectura atributo en OnAction Ejecución en MVC3 asp.net

[MyAttribute(integer)] 
public ActionResult MyAction() 
{ 
} 


protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    //here i want to read integer passed to action using Attribute 
} 

Respuesta

10

Inténtelo:

Controller

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    foreach (var filter in filterContext.ActionDescriptor.GetCustomAttributes(typeof (MyAttribute), false).Cast<MyAttribute>()) 
    { 
    var desiredValue = filter.Parameter; 
    } 

    base.OnActionExecuting(filterContext); 
} 

Filtro

public class MyAttribute : FilterAttribute, IActionFilter 
{ 
    private readonly int _parameter; 

    public MyAttribute(int parameter) 
    { 
    _parameter = parameter; 
    } 

    public int Parameter { get { return _parameter; } } 

    public void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
    //throw new NotImplementedException(); 
    } 

    public void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
    //throw new NotImplementedException(); 
    } 
} 
+0

Para obtener una explicación completa de los filtros de acción, consulte este artículo: https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs –