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

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


但我知道它可以为空,这就是为什么我将这种条件设置为

您有其他选择或提示给我吗,谢谢!

附注:我知道代码很奇怪:P,但我必须予以支持...

最佳答案

通过将其添加到控制器中,System.Web.Caching.Cache对象已经可以使用:

this.HttpContext.Cache

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

09-28 05:54