我在基本控制器中设置了一个属性,以便我可以从每个操作中访问它的值。最初我在方法中放入代码以获取值(从 cookie),该OnActionExecuting
方法有效,但后来我意识到它会在每次操作调用时被调用(由于重复部分视图,某些页面可能会运行数百次)。我怎么能这样做,所以每页只调用一次?
我看了一个类似的回答问题...如何在 ASP.NET MVC 页面循环中调用一个函数*仅一次*,但答案只处理 Ajax 请求,这不是我的问题。
我在基本控制器中设置了一个属性,以便我可以从每个操作中访问它的值。最初我在方法中放入代码以获取值(从 cookie),该OnActionExecuting
方法有效,但后来我意识到它会在每次操作调用时被调用(由于重复部分视图,某些页面可能会运行数百次)。我怎么能这样做,所以每页只调用一次?
我看了一个类似的回答问题...如何在 ASP.NET MVC 页面循环中调用一个函数*仅一次*,但答案只处理 Ajax 请求,这不是我的问题。
与@philsandler 提到的类似,您可以使用相同的解决方案。但我仍然会使用动作过滤器来使其可重用和包含。像下面的东西。
public class RunOnlyPerAction : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if (!filterContext.HttpContext.Request.IsAjaxRequest())
{
//read cookie
}
}
}
[RunOnlyPerAction]
public ActionResult Index()
{
return View();
}