在MVC3中的每个操作之前运行一个方法 [英] Run a method before each Action in MVC3
本文介绍了在MVC3中的每个操作之前运行一个方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在MVC3中运行每个Action之前,我们如何运行方法?
How can we run a method before running each Action in MVC3?
我知道我们可以对OnActionExecuting
使用以下方法:
I know we can use the following method for OnActionExecuting
:
public class ValidateUserSessionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
...
}
}
但是如何在ActionExecuting之前运行方法?
But how can we run a method before ActionExecuting ?
推荐答案
您正在寻找此功能在每次操作调用之前被调用.您可以在控制器或基本控制器中覆盖它.基于 Nadeem Afana
This function is called before each action calls. You can override it in a controller or a base controller. Example that sets culture base on cookies from 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();
}
}
这篇关于在MVC3中的每个操作之前运行一个方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文