繁体   English   中英

在MVC3中的每个Action之前运行一个方法

[英]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, PostsharpCastle Windsor可以轻松处理任务等。

您还可以考虑在global.asax中使用Application_BeginRequest方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM