2

我在基本控制器中设置了一个属性,以便我可以从每个操作中访问它的值。最初我在方法中放入代码以获取值(从 cookie),该OnActionExecuting方法有效,但后来我意识到它会在每次操作调用时被调用(由于重复部分视图,某些页面可能会运行数百次)。我怎么能这样做,所以每页只调用一次?

我看了一个类似的回答问题...如何在 ASP.NET MVC 页面循环中调用一个函数*仅一次*,但答案只处理 Ajax 请求,这不是我的问题。

4

1 回答 1

1

与@philsandler 提到的类似,您可以使用相同的解决方案。但我仍然会使用动作过滤器来使其可重用和包含。像下面的东西。

public class RunOnlyPerAction : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext) {
        if (!filterContext.HttpContext.Request.IsAjaxRequest())
        {
            //read cookie
        }
    }
}


 [RunOnlyPerAction]
 public ActionResult Index()
 {
     return View();
 }
于 2013-10-28T19:50:46.763 回答