缓存 MVC .NET 4.0
我正在尝试缓存一个不为空的选择列表,但出现空异常错误。导致错误的代码行是:(注意 item 是使用 Cache item = new Cache() 创建的;并且 tripVM.friendDropDown 保存选择列表
item.Insert("friendDropDown", tripVM.friendDropDown,null,DateTime.Now.AddMilliseconds(10000), TimeSpan.Zero);
大多数在线资源都说我可以使用下面的语法,但这在 VS2010 中是不允许的使用.NET 4.0:
cache["friendDropDown"] = tripVM.friendDropDown;
这个错误来自哪里
?
I am trying to cache a selectlist which is not null but I get a null exception error. The line of code causing the error is: (note item is created using Cache item = new Cache(); and tripVM.friendDropDown holds the selectlist
item.Insert("friendDropDown", tripVM.friendDropDown,null,DateTime.Now.AddMilliseconds(10000), TimeSpan.Zero);
Most of the online resources say that I could use the syntax below but this is not allowed in VS2010 using .NET 4.0:
cache["friendDropDown"] = tripVM.friendDropDown;
Where is this error coming from?
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该缓存该数据而不是控件。在控制器内部,检查缓存是否存在,否则添加它。然后,将数据设置为传递给视图的 ViewData 或模型,并从那里访问它。
如果您的目的是缓存整个视图结果,那么您可以使用“OutputCache”属性缓存控制器的输出。
最后,当您去缓存某些内容时,您应该使用 HttpContext.Cache (http://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache.aspx) 这将为您提供一个区域缓存,除非您想创建自己的缓存管理器或使用企业库之类的缓存管理器。
You should be caching that data and not the control. Inside the controller, check if the cache exists otherwise add it. Then you set the data to the ViewData or a Model you pass to the view and access it from there.
If your intention is to cache the entire view results then you can cache the output from the controller using "OutputCache" attribute.
Finally, when you go to cache something, you should be using HttpContext.Cache (http://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache.aspx) this will give you a single area to cache unless you want to create your own cache manager or use one like enterprise libarary.