J'essaye d'écrire un usercontrol de "menu.ascx" commun dans Asp.Net MVC qui générera un menu HTML correctement formaté pour mon application. Le menu est généré en fonction du contenu de la base de données et d'une série de résolutions de ressources ... transmises à la vue partielle via un attribut sur un ViewModel.Comment puis-je savoir si le OutputCache pour un contrôle donné est utilisé?
Il serait judicieux d'utiliser une directive OutputCache sur le contrôle menu.ascx afin de limiter le nombre d'allers-retours à la base de données et aux fichiers de ressources. Mon intention est de marquer la directive OutputCache avec les attributs VaryByParam = none et VaryByCustom, en implémentant une recherche de sécurité personnalisée dans global.asax ...
Ma question est: comment savons-nous quand OutputCache for menu.ascx va être utilisé, de sorte que nous pouvons passer les opérations de récupération de données lors de la construction du ViewModel dans le contrôleur?
Certains exemples de code UserControl:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%@ OutputCache VaryByParam="none" VaryByCustom="customstring" %>
<ul>
<% var model = (IMyViewModel)Model;
foreach (var menu in model.Menus) { %>
<li><a href="<%= menu.href %>"><%= menu.Text %></a></li>
<% } %>
</ul>
RenderAction est uniquement disponible dans les futurs ASP.Net MVC ... Je ne sais pas si nous voulons y aller encore. –