我在基本控制器中设置了一个属性,这样我就可以从每个动作中访问它的值。最初我把代码用来获取OnActionExecuting
方法中的值(来自cookie),这有效,但后来我意识到它会在每次动作调用时被调用(有些页面因为重复而可能会运行数百次部分观点)。我怎么能这样做,所以每页只调用一次?
我看了一个类似的回答问题...... How to call a function *only once* in ASP.NET MVC page cycle但答案只涉及Ajax请求,这不是我的问题。
答案 0 :(得分:0)
与@philsandler类似,您可以使用相同的解决方案。但我仍然会使用动作过滤器使其可重复使用和包含。像下面的东西。
public class RunOnlyPerAction : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if (!filterContext.HttpContext.Request.IsAjaxRequest())
{
//read cookie
}
}
}
[RunOnlyPerAction]
public ActionResult Index()
{
return View();
}