2011-08-20 7 views
5

Sto avendo un'azione e attributo come in seguito, ho cavalcato over-OnActionExecuting e voglia di leggere l'attributo in quel metodolettura attributo nella OnAction Esecuzione in asp.net MVC3

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


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

risposta

10

Provalo:

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

Per una spiegazione completa dei filtri di azione, consultare questo articolo: https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/comprensione-azione-filtri-cs –

Problemi correlati