在控制器中实现System.Web.Caching.Cache对象以缓存特定查询

时间:2010-03-29 15:07:38

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

在我的控制器中实现这样的缓存对象是否正确:

public class HomeController : BaseController
{
    public static Cache cachingControl = new Cache();

...

我这样使用它:

public ActionResult Home()
{
    IndexViewData view = new IndexViewData();
    view.UserId = UserId;

if (cachingControl.Get("viewHome") != null) {
    view = (IndexViewData)cachingControl.Get("viewHome");
} else {
    view.allAdsList = AllAds(5000, 0);

    if (Request.QueryString["voirTous"] != null)
        view.loadGeneral(true);
    else
        view.loadGeneral(false);

    cachingControl.Insert("viewHome", view);
}

view.adsList = SetupSearch(5, false, 0);

return View(view);

}

但是当我打电话给这一行时:

if (cachingControl.Get("viewHome") != null) {

他们把错误扔给我

  

NullErrorException

但是我知道它可以为null这就是为什么我把这个条件放到

你有替代方案或提示吗谢谢你!

P.S。:我知道代码很奇怪:P但我必须支持它......

1 个答案:

答案 0 :(得分:4)

System.Web.Caching.Cache对象已经可以通过添加到控制器来使用了:

this.HttpContext.Cache

这是已经内置的缓存,也可以在Web表单中使用。