5 votes

Comment faire un "donut cache" dans ASP.NET MVC pour quelque chose de plus qu'une date ?

Tous les exemples de mise en cache de donuts que j'ai vus sont comme ceci :

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

C'est bien si je veux juste la date, mais quelles sont les autres options ?

Je sais qu'il existe un délégué 'MvcSubstitutionCallback' qui a la signature suivante :

 public delegate string MvcSubstitutionCallback(HttpContextBase httpContext); 

mais RenderAction y RenderPartial renvoie void, donc je ne peux pas simplement les renvoyer depuis la méthode du délégué. Comment puis-je utiliser efficacement ce rappel pour des situations plus complexes ?

J'ai regardé les deux articles de Phil Haacked. aquí y aquí mais aucun ne semble faire exactement ce que je veux.

3voto

eu-ge-ne Points 17847

"Donut Caching" signifie utiliser la méthode Response.WriteSubstitution. Si vous regardez les sources MVC, vous verrez que la méthode System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial utilise Response.Output (HtmlHelper.cs, ligne 277 - dernière ligne de la méthode 'RenderPartialInternal') - vous devez donc créer vos propres aides html pour gérer des situations plus complexes.

3voto

Rupert Bates Points 1690

Notez que si cela fonctionnait dans Mvc 1.0, ce n'est plus le cas dans Mvc 2.0. Voir ici : http://haacked.com/archive/2008/11/05/donut-caching-in-asp.net-mvc.aspx

1voto

Simon_Weaver Points 31141

0voto

Ron Points 1315

Cet article pourrait vous être utile : http://www.asp.net/Learn/mvc/tutorial-19-cs.aspx (Ajout de contenu dynamique à une page en cache en ASP.NET MVC)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X