Esegui un metodo prima di ogni azione in MVC3

Come possiamo eseguire un metodo prima di eseguire ogni azione in MVC3?

So che possiamo utilizzare il seguente metodo per OnActionExecuting :

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

Ma come possiamo eseguire un metodo prima di ActionExecuting?

Stai cercando Controller.ExecuteCore () .

Questa funzione viene chiamata prima di ogni azione. È ansible sovrascriverlo in un controller o in un controller di base. Esempio che imposta la cultura di base sui cookie di 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(); } } 

Vorrei anche suggerire di esaminare AOP, Postsharp o Castle Windsor in grado di gestire facilmente tale compito.

Inoltre potresti prendere in considerazione l’uso del metodo Application_BeginRequest in global.asax