我正在尝试在Asp.Net MVC中编写一个常见的“menu.ascx”usercontrol,它将为我的应用程序生成格式正确的HTML菜单。该菜单是根据数据库中的内容和一系列资源分辨率生成的,它们通过ViewModel上的属性传递给PartialView。如何知道给定控件的OutputCache是否正在使用?
在menu.ascx控件上使用OutputCache指令是有意义的,以限制数据库和资源文件的往返次数。我的意图是用VaryByParam = none和VaryByCustom属性标记OutputCache指令,在global.asax中实现一个自定义的安全查找...
我的问题是:我们如何知道什么时候menu.ascx的OutputCache将要被使用,这样我们可以在控制器中构建ViewModel时跳过数据获取操作?
一些示例用户控件代码:
<%@ 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仅适用于ASP.Net MVC期货...我不确定我们是否想要去那里。 – 2009-07-10 11:47:36