我正在使用ASP.NET MVC(3)应用程序。它是一个订购系统。当我在“选择产品”页面中添加产品时,它将重定向到“查看并应用”页面以查看购物车。
假设我在“选择产品”页面中添加产品“A”并移至“查看并应用”并返回“选择产品页面”并重新启动产品并添加产品“B”。当我转到Review and Apply页面时,我只看到产品A.当我使用IE的网络选项卡检查时,它表示服务器响应状态代码304,因此客户端使用缓存页面。
如何解决此问题,以便服务器向我发送新页面而不是304。
感谢。
答案 0 :(得分:1)
向控制器或操作添加输出缓存属性。我建议您在web.config中使用缓存配置文件来实现此目的。
[OutputCache(CacheProfile = "NoCache")]
public class MyController : Controller
{
}
这将放在system.web元素下的web.config中。
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<clear />
<add name="NoCache" varyByParam="None" location="ServerAndClient" noStore="true" duration="0" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
现在有一件事是棘手的,对于较新版本的MVC(3和4),如果对子项应用缓存配置文件,您将得到“ InvalidOperationException:持续时间必须为正数”动作(即如果你使用@ Html.RenderAction)。因此,如果以这种方式调用您的操作,您将无法在其上使用OutputCache属性。而是在将呈现子操作的父操作上使用OutputCache属性。
示例:
public class MyController : Controller
{
[OutputCache(CacheProfile="NoCache")]
public ActionResult Index()
{
return View();
}
[ChildActionOnly]
public ActionResult ChildAction()
{
return View();
}
}