在页面之间导航时停止主页刷新?

时间:2010-04-21 07:46:14

标签: asp.net ajax master-pages

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

为了在我试图使用 Response.Redirect windows.location java脚本的页面之间导航没有成功,我应该使用Frames或IFrame而不是Master Pages来停止刷新?

任何有关解决此问题的建议都将受到高度赞赏,在此先感谢...

3 个答案:

答案 0 :(得分:5)

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

  1. 我与Ajax一起使用的溶剂是 将每个“页面”作为用户 控制,并将它们全部放入 UpdatePanel与visible="false"。 然后在“页面”之间导航,切换 用户控件的可见性 显示正确的“页面”控件。

  2. 另一种方法是使用iframe。

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

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

答案 1 :(得分:2)

母版页只不过是(大部分时间)扩展“普通”页面的应用程序的默认布局。母版页和contentplaceholder呈现为完整的html页面。在页面之间导航时,整个页面刷新是正常行为。这就是网络的运作方式。

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

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

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

  3. 反正。这真的取决于你的应用程序。有多种解决方案可以解决刷新行为。

答案 2 :(得分:1)

有一个你所解释的结构:

  • 大师
        
    • 儿童第1页
    •   
    • 儿童第2页
    •   
    • ...

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

如果您想在同一页面内切换不同的应用程序视图(因此为了防止完整的页面刷新),您可以使用一个updatePanel来加载不同的视图,使用单个页面(Master变得毫无用处)。

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