ASP.NET MVC:缓存中控制器上的递增计数器

时间:2011-05-22 06:35:21

标签: c# .net asp.net-mvc

控制器是:

[OutputCache(Duration = Int32.MaxValue, VaryByParam = "id", SqlDependency = "data:table")]
public ActionResult Details(int id)
{
   var model = repo.GetDetails(id);
   repo.IncreaseCounter(id);
   return View(model);
}

原因计数器不能正常工作(当有人打开页面时增加计数器。)

是否可以每次调用repo.IncreaseCounter(id)但是启用了缓存离开?

我想,我可以打电话给两个控制器:一个用于增加计数器,另一个用于增加计数器。你能建议更优雅的方式吗? TIA

1 个答案:

答案 0 :(得分:1)

一种选择是在每个页面内使用基于图像的跟踪器:

<img src="/counter/increase/12" />

然后设置一个控制器动作,这将增加计数器:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*", Location = OutputCacheLocation.None)]
public ActionResult Increase(int id)
{
    repo.IncreaseCounter(id);
    return File("empty.png", "image/png");
}

作为基于图像的跟踪器的替代方案,您可以使用基于AJAX的跟踪器,该跟踪器将使用AJAX命中控制器操作。