【问题标题】:Stop Master page refreshing while navigating between pages?在页面之间导航时停止母版页刷新?
【发布时间】:2010-04-21 07:46:14
【问题描述】:

我在我的 ASP.net 应用程序中使用母版页,在母版页中,我在更新面板中放置了一个 ContentPlaceHolder 以支持子页面中的 AJAX,问题是如何在页面之间导航时停止刷新“母版页控件” ?

对于页面之间的导航,我尝试使用 Response.Redirectwindows.location java 脚本但没有成功,我应该使用 Frames 还是 IFrames 而不是 Master Pages停止刷新?

任何解决此问题的建议将不胜感激,在此先感谢...

【问题讨论】:

    标签: asp.net ajax master-pages


    【解决方案1】:

    如果您不希望在“页面”之间切换时刷新页面,使用母版页将没有任何好的解决方案。正如其他人所说的那样,母版页只是不同页面使用的通用“模板”。之间的导航就像调用不同的页面一样,当然会重新加载整个页面,包括母版页内容。

    1. 我使用 Ajax 的一个解决方案是 将每个“页面”作为用户 控件,并将它们全部放在一个 带有visible="false" 的更新面板。 然后在“页面”之间导航,切换 用户控件的可见性 显示正确的“页面”控件。

    2. 替代方法是使用 iframe。

    这些解决方案都不使用 MasterPage。

    MasterPage 概念旨在简化 Ajax 在 ASP.NET 中引入之前的常见外观。在 Ajax 流行之后,不刷新整个页面的需求更加普遍。

    【讨论】:

    • 感谢您的帖子,我尝试了第一个解决方案,没有将所有控件都放在页面中,而是在运行时创建控件,这样更快更好,:( 最后我移回到 Frames 因为在 Java Script 代码中发生了很多问题。现在 Frames 为您解决了这个问题,谢谢大家。
    【解决方案2】:

    母版页只不过是使用(大多数情况下)应用程序的默认布局扩展您的“正常”页面。母版页和内容占位符呈现为完整的 html 页面。当您在页面之间导航时,整个页面刷新是正常行为。这就是网络的运作方式。

    使用 iframe 可以解决您的问题。但是,这还有其他一些副作用:

    1. 整个母版页不再有用了。 iframe 周围的内容就是“母版页”。

    2. 使用母版页实际上浏览到另一个 url,您还会在浏览器的 url 栏中看到。当您使用 iframe 时,您会在 iframe 中导航到另一个页面。您浏览器中的网址将保持不变。当您的应用程序的用户点击刷新按钮时,它总是从您在 html 中分配给 iframe 的默认页面重新开始。当然有一些解决方法

    无论如何。这实际上取决于您的应用程序。有多种解决方案可以解决刷新行为。

    【讨论】:

    • 谢谢,其实我用框架解决了刷新问题,但是我正在寻找另一种方法来解决这个问题,假设您在左侧有导航栏,在右侧有页面该页面,我希望在单击 NavBar 中的任何项目时不要回发漏洞页面。
    • 这不是回发。您只需请求另一个 url,服务器就会返回一堆由浏览器呈现的 html。对于整体提神,您最大的问题/担忧是什么?
    • 重新加载Logo和Navigation Bar和Footer的问题,导致网站运行缓慢,要求网站尽可能的像windows应用一样,这不能完全做到支持 Ajax。
    • 有道理。在那种情况下,使用 iframe 并不能真正解决您的“问题”。 iframe 中的内容也将被加载。如果网站或连接速度很慢,这可能会导致白框。
    • 感谢您的宝贵时间,我正在努力将网页转换为 UserControls 并使用更新面板中的 LoadControl 功能加载控件,看起来不错,但我遇到了很多困难和问题正在尝试解决。 IFrame 很好,我看到 Gmail 正在使用它来解决这个问题。
    【解决方案3】:

    具有您所解释的结构:

    • 大师
      • 子页面 1
      • 子页面 2
      • ...

    然后,当您从第 1 页切换到第 2 页等时,您无法阻止页面刷新,因为当它呈现给浏览器时,您只有一个“页面”实体(主内容 + 选定的页面内容)。

    如果您想在同一页面内的不同应用视图之间切换(以防止完整的页面刷新),您可以使用单个页面(主页面变得非常无用)和更新面板,您可以在其中加载不同的视图。

    您也可以使用 iFrame,但如果您必须处理页面不同部分(其中一些在 iFrame 内)之间的任何类型的通信,我个人建议不要使用它们。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多