我如何在ASP.NET MVC中“缓存”以获取更多信息

时间:2009-05-15 01:16:08

标签: asp.net-mvc donut-caching

我见过的甜甜圈缓存的所有例子都是这样的:

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

如果我只想要约会,那很好,但还有其他选择吗?

我知道有一个委托'MvcSubstitutionCallback',它有以下签名:

 public delegate string MvcSubstitutionCallback(HttpContextBase httpContext); 

但是RenderActionRenderPartial返回void,所以我不能从委托方法返回它们。如何在更复杂的情况下有效地使用此回调。

我查看了Phil Haacked的文章herehere,但似乎都没有完全符合我的要求。

4 个答案:

答案 0 :(得分:3)

“Donut Caching”表示使用Response.WriteSubstitution方法。如果你看一下MVC源代码,你会看到System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial方法正在使用Response.Output(HtmlHelper.cs,第277行 - 'RenderPartialInternal'方法中的最后一行) - 所以你需要创建自己的用于处理更复杂情况的html助手。

答案 1 :(得分:3)

请注意,虽然这在Mvc 1.0中有效,但在Mvc 2.0中不再有效。 见这里:http://haacked.com/archive/2008/11/05/donut-caching-in-asp.net-mvc.aspx

答案 2 :(得分:1)

答案 3 :(得分:0)

本文可能会有所帮助:http://www.asp.net/Learn/mvc/tutorial-19-cs.aspx(将动态内容添加到ASP.NET MVC中的缓存页面)