Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止母版页闪烁?_C#_Asp.net_Master Pages - Fatal编程技术网

C# 如何防止母版页闪烁?

C# 如何防止母版页闪烁?,c#,asp.net,master-pages,C#,Asp.net,Master Pages,我正在构建一个ASP.NET应用程序,希望使用母版页来显示品牌和导航信息,并在多个内容页中移动。但是,每次我尝试加载新内容时,整个页面都会闪烁。有没有办法避免这种情况 母版页: <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Interface.Site" %> <%@ Register TagPrefix="customControl"

我正在构建一个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>

这不是只有在使用帧时才可能的吗?据我所知,母版页和内容页在服务器端绑定在一起,并将客户端作为一个整体向下推

在那里,你想要的东西听起来像是使用一个带有内联框架的页面来为你的修道院服务。这将防止外部页面在客户端“闪烁”


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

控件事件会触发返回页面的帖子,这通常会产生您看到的“空白”效果。为了减轻这一点,您可能需要考虑使用某种Ajax解决方案来导致部分回发或异步回发以防止“消隐”。


但是,在按钮单击的特定情况下,如果您所要做的只是将其用于另一个页面,那么您真的应该只使用
标记,并避免使用Response.Redirect。

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

您不需要移动updatepanel,您的重定向会导致浏览器加载新页面

它在闪烁,因为您正在执行响应。重定向。我认为有很多方法可以动态地将控件加载到同一个页面中,但我还没有尝试过。我现在确信我的重定向是错误的,但有人能建议如何在避免闪烁的同时更改内容吗?这并不能完全消除闪烁,但现在只有在Chrome中才可以注意到。
<%@ 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");
    }
}