1

当用户单击母版页中的菜单项时,是否可以避免页面闪烁?我尝试了不同的方法来避免这种情况,例如<asp:UpdatePanel runat="server" ID="updateMenu"在包含在

            <div class="main">
                <asp:ContentPlaceHolder ID="MainContent" runat="server" />
            </div>` but it doesn't work. 

我的代码是这样的

         <asp:Menu  ID="NavigationMenu" runat="server" Orientation="Horizontal"> 

            <Items>
                    <asp:MenuItem NavigateUrl="~/home.aspx" Text="Home"/>
                    <asp:MenuItem NavigateUrl="~/welcome.aspx" Text="Welcome"/>
                    <asp:MenuItem NavigateUrl="~/item.aspx" Text="Item"/>
            </Items>
        </asp:Menu>  

属性 NavigateUrl 是否像 Response.Redirect() 方法一样工作,因为 Response.Redirect 强制刷新页面。

如果我使用站点地图会解决我的问题吗?

请帮我。任何意见,将不胜感激。

4

2 回答 2

0

NavigateUrl 只不过是链接中的 href。如果您查看呈现的 HTML,您可能会看到带有指向 home.aspx 或 welcome.aspx 的 href 的“a”标签。

加载一个新的(网页)页面总是会导致某种闪烁,因为您告诉浏览器丢弃它现在拥有的页面并从服务器获取并呈现一个新页面。无论您是通过菜单、链接还是基于站点地图,这都不会改变。

您可以做的一件事是创建一个默认页面,其中包含您需要的所有默认元素,并为页面特定的内容添加一个占位符。接下来,您可以将占位符的内容替换为您正在加载的页面的特定内容。这将减少但不会消除闪烁,因为仍然需要从服务器获取(部分)网页并用新的 HTML 替换当前的 HTML。

另一种方法是在您的页面中加载所有内容并隐藏/显示您需要的项目。不过,这在导航方面采用了完全不同的方法,并且可能会破坏您的网站/Web 应用程序现在的结构。

希望这可以帮助

于 2013-01-04T08:50:50.400 回答
0

MenuItem控件呈现指向您在NavigateUrl. 因此,每次单击链接时,都会加载一个新页面。所以是的,它的工作原理类似于Response.Redirect()

如果您想避免这种“闪烁”,那么您应该考虑通过 Ajax 加载您的页面内容。我会避免使用 UpdatePanel,因为它总是将整个页面发布回它自己。

所以我建议搜索并查看通过 Ajax 加载页面内容,或者看看这个 SO Question 作为初学者

pjax 是“流畅”导航的方式吗?

于 2013-01-04T08:52:44.047 回答