【问题标题】:Why is my asp:Substitution control suddenly not working in ASP.NET 4.0?为什么我的 asp:Substitution 控件在 ASP.NET 4.0 中突然不起作用?
【发布时间】:2010-04-18 02:50:00
【问题描述】:

我刚刚将我的网站从 ASP.NET 3.5 升级到 4.0。我一直在努力进行一些重大更改,并且超出了我的预期。

然而,我无法弄清楚为什么我的<asp:Substitution /> 控件突然停止正常工作。它应该忽略父页面的输出缓存设置并在每次请求时更新。由于某种原因,这没有发生。它缓存了整整 10 分钟(我主页的 OutputCache 设置)。有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc-2 outputcache asp.net-4.0 substitution


    【解决方案1】:

    和其他服务器控件在 MVC 中不受支持。特别是响应替换与 WebForms 管道有着错综复杂的联系。它在 MVC 1 中工作的事实是一个愉快的意外,但不是故意的。

    MVC 团队正在研究在 MVC 3 及更高版本中启用替换缓存的方法,但可能会有特定于 MVC 的机制来执行此操作,因此您不应期望 或 Response.WriteSubstitution()继续工作。同时,最好的选择是输出缓存整个页面,然后使用Javascript/AJAX让客户端填写需要更新的部分。

    【讨论】:

    • 谢谢李维。我找到了另一种解决方法。我改变了我的策略,因为实际上只有一个页面部分可以从缓存中受益。事实证明,如果您将其添加到页面中,就好像它是 Web 窗体控件一样,可以在 Partial View 上使用 OutputCache 指令...highoncoding.com/Articles/…
    • 我会避免在 .ascx 上使用 ,因为它也是一个丑陋的 hack,并且不能保证继续工作(就像替换缓存如何被破坏一样)。如果您只需要缓存页面的一部分,请考虑使用 MVC Futures for ASP.NET 4 (aspnet.codeplex.com/releases/view/41742) 中的 [ChildActionCache] 属性。该属性可以应用于作为 Html.RenderAction() 目标的方法,并且仅该 RenderAction() 的内容将被缓存指定的时间段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2022-07-03
    • 2014-03-18
    • 2017-06-12
    相关资源
    最近更新 更多