在ASP.NET MVC中每页运行一次控制器代码

时间:2013-10-28 19:37:30

标签: asp.net-mvc

我在基本控制器中设置了一个属性,这样我就可以从每个动作中访问它的值。最初我把代码用来获取OnActionExecuting方法中的值(来自cookie),这有效,但后来我意识到它会在每次动作调用时被调用(有些页面因为重复而可能会运行数百次部分观点)。我怎么能这样做,所以每页只调用一次?

我看了一个类似的回答问题...... How to call a function *only once* in ASP.NET MVC page cycle但答案只涉及Ajax请求,这不是我的问题。

1 个答案:

答案 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();
 }