在我的控制器中实现这样的缓存对象是否正确:
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但我必须支持它......
答案 0 :(得分:4)
System.Web.Caching.Cache对象已经可以通过添加到控制器来使用了:
this.HttpContext.Cache
这是已经内置的缓存,也可以在Web表单中使用。