gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:59:37 26 4
gpt4 key购买 nike

在 MVC3 中,我们如何在运行每个 Action 之前运行一个方法?

我知道我们可以对 OnActionExecuting 使用以下方法:

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

但是我们怎样才能在 ActionExecuting 之前运行一个方法呢?

最佳答案

您正在寻找 Controller.ExecuteCore() .

此函数在每个 Action 调用之前调用。您可以在 Controller 或基本 Controller 中覆盖它。基于来自 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();
}
}

关于c# - 在 MVC3 中的每个 Action 之前运行一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9830394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com