如何防止母版页闪烁?

时间:2009-10-14 18:41:33

标签: c# asp.net master-pages

我正在构建一个ASP.NET应用程序,并希望使用母版页来显示品牌和导航信息,并浏览多个内容页面。但是,每次我尝试加载新内容时,整个页面都会闪烁。反正有没有避免这个?

母版页:

    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Interface.Site" %>
    <%@ Register TagPrefix="customControl" TagName="NavigationBar" Src="NavigationControl/NavigationControl.ascx" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Registration</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
    <link href="Stylesheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="RegistrationMasterForm" runat="server">
    <div>
     <asp:ScriptManager ID="ScriptManager" runat="server" EnablePartialRendering="true">
        </asp:ScriptManager>

        <%-- Contents of this div span the top of the page for branding --%>
        <div id="BrandingBanner">
            <asp:Image ID="Banner" runat="server" 
                ImageUrl="Images/BrandingBanner.png"/>
        </div>

        <%-- Navigation Bar, the contents of this div should remain unchanged --%>
        <div id="NavigationBar">
            <customControl:NavigationBar ID="navBar" runat="server"/>
        </div>

        <%-- Contains any forms or controls that may be uniquie to the page --%>
        <div id="FormControls">
            <div id="FormContent">            
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">        
                </asp:ContentPlaceHolder>
            </div>            
        </div>

    </div>
    </form>
</body>
</html>

内容:

<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="Interface.WebForm2" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                Check me out!  I am content for the master page!
                <asp:Button ID="Button1" runat="server" Text="Next" onclick="Button1_Click" />
            </ContentTemplate>
        </asp:UpdatePanel>
</asp:Content>

背后的内容代码:

public partial class WebForm2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("WebForm3.aspx");
    }
}

4 个答案:

答案 0 :(得分:1)

控制事件触发回到您的页面的帖子,这通常会创建您看到的“消隐”效果。为了缓解这种情况,您可能需要考虑使用某种Ajax解决方案来导致部分回发或异步回发以防止“消隐”。

但是,在按钮单击的特定情况下,如果你要做的就是将使用带到另一个页面,你真的应该使用<a href="WebForm3.aspx">标签并避免使用Response.Redirect。

答案 1 :(得分:0)

这是否只有在你使用框架时才有可能?据我所知,主页和内容页面在服务器端绑定在一起,并整体下推客户端。

你想要的东西听起来像使用一个页面进行品牌推广和导航与内联框架来提供你的女修道院。这将防止外页在客户端“闪烁”。

编辑:虽然这不是新的做事方式。您可能希望使用UpdatePannel或其他AJAX样式设计来查看某些内容。

答案 2 :(得分:0)

您正在重定向代码隐藏页面。 这会导致浏览器更改页面,并重绘整个内容,至少是IIRC。我很久没有使用过updatepanel了。

答案 3 :(得分:0)

您无需移动更新面板,您的重定向会导致浏览器加载新页面。