[英]Run a method before each Action in MVC3
如何在MVC3中运行每个Action之前运行一个方法?
我知道我们可以使用以下方法进行OnActionExecuting
:
public class ValidateUserSessionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
...
}
}
但是如何在ActionExecuting之前运行一个方法呢?
您正在寻找Controller.ExecuteCore() 。
在每个动作调用之前调用此函数。 您可以在控制器或基本控制器中覆盖它。 在Nadeem Afana上设置基于cookie的文化基础的示例 :
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();
}
}
我还建议调查AOP, Postsharp或Castle Windsor可以轻松处理任务等。
您还可以考虑在global.asax中使用Application_BeginRequest方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.