在我的控制器中实现这样的缓存对象是否正确:
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表单中使用。