Jam*_*lak 19 c# asp.net-mvc caching asp.net-mvc-3
我正在尝试使用ASP.NET MVC 3中提供的新的部分页面缓存.在我看来,我正在使用:
<% Html.RenderAction("RenderContent", Model); %>
Run Code Online (Sandbox Code Playgroud)
哪个调用控制器方法:
[Authorize]
[OutputCache(Duration = 6000, VaryByParam = "*", VaryByCustom = "browser")]
public ActionResult RenderContent(Content content)
{
return PartialView(content);
}
Run Code Online (Sandbox Code Playgroud)
请注意,原始视图和局部视图都使用相同的视图模型.
问题是VaryByParam
不起作用 - RenderContent()
无论传递给哪个视图模型,总是返回相同的缓存HTML.有什么关于VaryByParam
我不明白的事吗?
Jam*_*lak 26
我想我明白了.看起来问题是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);
}
Run Code Online (Sandbox Code Playgroud)