部分页面缓存和VaryByParam时在ASP.NET MVC 3
我试图使用ASP.NET MVC 3提供的新的部分页面缓存在我看来,我使用:部分页面缓存和VaryByParam时在ASP.NET MVC 3
<% Html.RenderAction("RenderContent", Model); %>
哪调用控制器方法:
[Authorize] [OutputCache(Duration = 6000, VaryByParam = "*", VaryByCustom = "browser")]
public ActionResult RenderContent(Content content)
{
return PartialView(content);
}
请注意,原始视图和局部视图都使用相同的视图模型。
问题是,VaryByParam
不起作用 - RenderContent()
始终返回相同的缓存HTML,无论传递给它什么视图模型。有什么我不明白的VaryByParam
?
回答:
我想我想通了。看起来问题是,当输入参数是对象时,VaryByParam使用该对象上的ToString()
来确定它的唯一性。所以这留下了两个选择:
- 覆盖
ToString()
提供一个唯一的标识符。 传递一个唯一的标识符作为附加参数:
<% Html.RenderAction("RenderContent", Model, Model.Id); %>
[Authorize]
[OutputCache(Duration = 6000, VaryByParam = "id", VaryByCustom = "browser")]
public ActionResult RenderContent(Content content, string id)
{
return PartialView(content);
}
以上是 部分页面缓存和VaryByParam时在ASP.NET MVC 3 的全部内容, 来源链接: utcz.com/qa/257129.html