2010-05-27 13 views
5

Vorrei implementare un controller di base su uno dei miei controller. All'interno di quel controller di base, mi piacerebbe essere in grado di ottenere il nome ActionResult attualmente in esecuzione.Come si ottiene il nome dell'azione da un controller di base?

Come faccio a fare questo?

public class HomeController : ControllerBase 
{ 
    public ActionResult Index() 
    { 

E;

public class ControllerBase : Controller 
{ 
    public ControllerBase() 
    { 
     //method which will get the executing ActionResult 
    } 
} 

risposta

14

Non si può sapere questo nel costruttore del controller come controller è in corso di un'istanza e nessuna azione potrebbe essere ancora chiamato. Tuttavia si potrebbe sovrascrivere il metodo Initialize a prendere il nome di azione dal motore di routing:

protected override void Initialize(RequestContext requestContext) 
{ 
    base.Initialize(requestContext); 
    var actionName = requestContext.RouteData.Values["action"]; 
} 
+0

Ah, brillante! Grazie a @Darin. – griegs

+0

@griegs, sei più che benvenuto. –

Problemi correlati