部分页面缓存和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()来确定它的唯一性。所以这留下了两个选择:

  1. 覆盖ToString()提供一个唯一的标识符。
  2. 传递一个唯一的标识符作为附加参数:

    <% 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

回到顶部