アプリケーション用に適切にフォーマットされた HTML メニューを生成する一般的な "menu.ascx" ユーザー コントロールを Asp.Net MVC に記述しようとしています。メニューは、データベース内のコンテンツと一連のリソース解決に基づいて生成されます...これらは、ViewModel の属性を介して PartialView に渡されます。
データベースとリソース ファイルへの往復回数を制限するために、menu.ascx コントロールで OutputCache ディレクティブを使用することは理にかなっています。私の意図は、VaryByParam=none および VaryByCustom 属性で OutputCache ディレクティブをマークし、global.asax でカスタム セキュリティ ルックアップを実装することです...
私の質問は、コントローラーで ViewModel を構築するときにデータ フェッチ操作をスキップできるように、menu.ascx の OutputCache がいつ使用されるかをどのように知ることができるかということです。
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>