How do I 'donut cache' in ASP.NET MVC for something more than a date

末鹿安然 提交于 2020-01-02 04:33:43

问题


All the examples for donut caching I've seen are just like this :

 <%= Html.Substitute( c => DateTime.Now.ToString() )%>

Thats fine if I just want the date, but what other options are there?

I know there is a delegate 'MvcSubstitutionCallback' which has the following signature :

 public delegate string MvcSubstitutionCallback(HttpContextBase httpContext); 

but RenderAction and RenderPartial returns void so i cant just return them from the delegate method. How can I effectively use this callback for more complex situations.

I've looked at both of Phil Haacked's articles here and here, but neither seems to do exactly what I want.


回答1:


This article might be helpful: http://www.asp.net/Learn/mvc/tutorial-19-cs.aspx (Adding Dynamic Content to a Cached Page in ASP.NET MVC)




回答2:


"Donut Caching" means using Response.WriteSubstitution method. If you look at MVC source you will see that System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial method is using Response.Output (HtmlHelper.cs, line 277 - last line in 'RenderPartialInternal' method) - so you need create your own html helpers for handling more complex situations.




回答3:


Note that while this did work in Mvc 1.0, it no longer does in Mvc 2.0. See here: http://haacked.com/archive/2008/11/05/donut-caching-in-asp.net-mvc.aspx




回答4:


Here's an article updated for ASP.NET MVC 3 :

http://dotnetslackers.com/articles/aspnet/Cache-Exploration-in-ASP-NET-MVC-3-Part-1.aspx



来源:https://stackoverflow.com/questions/866634/how-do-i-donut-cache-in-asp-net-mvc-for-something-more-than-a-date

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!