Как мне «пончик кеш» в ASP.NET MVC для чего-то большего, чем дата - PullRequest
5 голосов
/ 15 мая 2009

Все примеры кэширования пончиков, которые я видел, выглядят так:

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

Хорошо, если я просто хочу дату, но какие еще есть варианты?

Я знаю, что есть делегат MvcSubstitutionCallback со следующей подписью:

 public delegate string MvcSubstitutionCallback(HttpContextBase httpContext); 

но RenderAction и RenderPartial возвращает void, поэтому я не могу просто вернуть их из метода делегата. Как я могу эффективно использовать этот обратный вызов для более сложных ситуаций.

Я посмотрел обе статьи Фила Хаакеда здесь и здесь , но ни одна из них, похоже, не выполняет именно то, что я хочу.

Ответы [ 4 ]

3 голосов
/ 20 апреля 2010

Обратите внимание, что хотя это работало в Mvc 1.0, оно больше не работает в Mvc 2.0. Смотрите здесь: http://haacked.com/archive/2008/11/05/donut-caching-in-asp.net-mvc.aspx

3 голосов
/ 15 мая 2009

«Кэширование пончиков» означает использование метода Response.WriteSubstitution. Если вы посмотрите на источник MVC, то увидите, что метод System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial использует Response.Output (HtmlHelper.cs, строка 277 - последняя строка в методе RenderPartialInternal), поэтому вам нужно создать свой собственный HTML помощники для обработки более сложных ситуаций.

1 голос
/ 15 января 2011

Вот обновленная статья для ASP.NET MVC 3:

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

0 голосов
/ 08 ноября 2009

Эта статья может быть полезна: http://www.asp.net/Learn/mvc/tutorial-19-cs.aspx (Добавление динамического содержимого на кэшированную страницу в ASP.NET MVC)

...