1

我正在使用 ASP.NET MVC(3) 应用程序。它是一个订购系统。当我在“选择产品”页面中添加产品时,它将重定向到“查看和应用”页面以查看购物车。

假设我在选择产品页面中添加产品“A”并移至查看和应用并返回选择产品页面并删除产品并添加产品“B”。当我移动到查看和应用页面时,我只看到产品 A。当我使用 IE 的网络选项卡检查它时,它说服务器以状态代码 304 响应,因此客户端使用缓存页面。

如何解决此问题,以便服务器向我发送新页面而不是 304。

谢谢。

4

1 回答 1

1

将输出缓存属性添加到您的控制器或操作。我建议您在 web.config 中使用缓存配置文件来实现此目的。

[OutputCache(CacheProfile = "NoCache")]
public class MyController : Controller
{

}

这将进入您的 web.config system.web 元素下。

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <clear />
      <add name="NoCache" varyByParam="None" location="ServerAndClient" noStore="true" duration="0" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

现在棘手的一件事是使用较新版本的 MVC(3 和 4),如果您在子操作上应用缓存配置文件(即,如果您使用 @ Html.RenderAction)。因此,如果以这种方式调用您的操作,您将无法在其上使用 OutputCache 属性。而是在将呈现子操作的父操作上使用 OutputCache 属性。

例子:

public class MyController : Controller
{
    [OutputCache(CacheProfile="NoCache")]
    public ActionResult Index()
    {
        return View();
    }

    [ChildActionOnly]
    public ActionResult ChildAction()
    {
        return View();
    }
}
于 2013-07-24T09:46:09.543 回答