2012-03-22 16 views
10

¿Cómo podemos ejecutar un método antes de ejecutar cada acción en MVC3?
Ejecute un método antes de cada acción en MVC3

Sé que podemos utilizar el siguiente método para OnActionExecuting:

public class ValidateUserSessionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     ... 
    } 
} 

pero ¿cómo podemos ejecutar un método antes ActionExecuting?

Respuesta

13

Está buscando Controller.ExecuteCore().

Esta función se invoca antes de cada acción. Puede anularlo en un controlador o en un controlador base. Ejemplo de base que establece la cultura de las cookies de Nadeem Afana:

public class BaseController : Controller 
    { 
     protected override void ExecuteCore() 
     { 
     string cultureName = null; 
     // Attempt to read the culture cookie from Request 
     HttpCookie cultureCookie = Request.Cookies["_culture"]; 
     if (cultureCookie != null) 
     { 
      cultureName = cultureCookie.Value; 
     } 
     else 
     { 
      if (Request.UserLanguages != null) 
      { 
       cultureName = Request.UserLanguages[0]; // obtain it from HTTP header AcceptLanguages 
      } 
      else 
      { 
       cultureName = "en-US"; // Default value 
      } 
     } 

     // Validate culture name 
     cultureName = CultureHelper.GetImplementedCulture(cultureName); // This is safe 


     // Modify current thread's cultures    
     Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName); 
     Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 

     base.ExecuteCore(); 
     } 
    } 
+2

Anulación BeginExecute si lo necesita en todas partes. es decir: carga de archivo –

3

También se podría considerar utilizar Application_BeginRequest método en el Global.asax

+0

Este es el enfoque que he usado y funcionó muy bien. – asawyer

+0

Necesito usar 'Request.Cookies' y' Session' en el método. pero no podemos acceder a ellos en 'Application_BeginRequest' –

Cuestiones relacionadas