将应用程序从ASP.NET MVC 1升级到ASP.NET MVC 2后,RC缓存替换已停止工作。
这是我的行动:
[OutputCache(Duration = 30, VaryByParam = "none")]
public ActionResult CacheTest1()
{
return View("CacheTest");
}
这是替补扩展名:
public static object Substitute(this HtmlHelper html, MvcCacheCallback cb)
{
html.ViewContext.HttpContext.Response.WriteSubstitution(
c => cb(new HttpContextWrapper(c)));
return null;
}
这是我的观点:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>CacheTest</title>
</head>
<body>
<div>
Date: <%=DateTime.Now.ToString() %>
Substitute: <%=Html.Substitute(c => DateTime.Now.ToString()) %>
Response.WriteSubstitution: <% Response.WriteSubstitution(c => DateTime.Now.ToString()); %>
</div>
</body>
</html>
页面缓存一分钟并且替换不起作用,它只显示最初呈现页面的时间。那是在ASP.NET MVC 1.0中工作的!!
有什么想法吗?
由于
答案 0 :(得分:3)
有点晚了,但Moth提供了输出缓存替换,它支持MVC 2和MVC 3.
答案 1 :(得分:2)
这是规范,以发行说明编写。
MVC Futures中的Html.Substitute辅助方法不再可用
由于渲染的变化 MVC视图引擎的行为, Html.Substitute辅助方法没有 工作并已被删除。
答案 2 :(得分:0)
这也有点晚了,但我一直在努力开发一个可以将后缓存替换带回Asp.Net MVC的库,其性能是主要关注点。它能够在我保持的大约6ms到10ms的其中一个站点上渲染一个输出缓存页面大约20个左右的复杂替换。
由于后缓存替换突破MVC 2,我们一直推迟升级我们的大部分项目超过MVC 1.我一直在努力让我们升级基础,我们的代码建立在
如果有人仍在为此问题寻找解决方法,请随时查看我的MvcSupplantCaching项目! :)