加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:49:11 所属栏目:百科 来源:网络整理
导读:在运行MVC3中的每个Action之前,我们如何运行一个方法? 我知道我们可以使用以下方法进行OnActionExecuting: public class ValidateUserSessionFilterAttribute : ActionFilterAttribute{ public override void OnActionExecuting(ActionExecutingContext fi
在运行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();
      }
   }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读