UpdatePanel asyncpostback后页面丢失标题

The*_*TXI 14 asp.net master-pages asp.net-ajax

我刚刚注意到,在我从UpdatePanel主页面内部执行asyncpostback后,我的页面标题将重置为标准的"Untitled Page" .从母版页内部回发期间(例如,当我单击母版页内的搜索框按钮时),标题不会丢失.

我假设通过使用不同的contentplaceholder专门设置文档标题我将避免这样的问题,但显然我错了.除了必须在ASPX页面的代码隐藏中明确设置标题之外还有其他我想念的东西(我希望避免使用下面设置的方式)吗?

这是我的页面的基本要点,即调用母版页(下面的母版页代码)

<asp:Content ID="Content1" ContentPlaceHolderID="title" Runat="Server">
    Page Title
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="head" Runat="Server">
    <script type="text/javascript">
        //random javascript validators
    </script>   
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="content" Runat="Server">
    <div class="title">
        Account Management
    </div>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            //Username + Password Set Form
        </ContentTemplate>       
    </asp:UpdatePanel>

</asp:Content>
Run Code Online (Sandbox Code Playgroud)

这是母版页.ASP.NET AJAX ScriptManager首先放在<form>正文中的标记之后.

<head id="Head1" runat="server">
    <title>
        <asp:ContentPlaceHolder id="title" runat="server">
        </asp:ContentPlaceHolder>
    </title>
        //Stylesheet references

    <script type="text/javascript">
        //Random javascript functions
    </script>

    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
Run Code Online (Sandbox Code Playgroud)

Not*_*tMe 7

我们在其中一个网站上遇到了这个问题.

立即修复是在主页面代码隐藏page_load方法中重置标题.

显然,当ajax调用发生时,它将重新运行母版页.这导致我们的头衔消失了.

例如:

protected void Page_Load(object sender, EventArgs e) {
    this.Page.Title = "whatever title you have...";
}
Run Code Online (Sandbox Code Playgroud)

一个更好的解决方法是删除MS updatepanel垃圾并开始使用JSON/jQuery,你实际上可以控制这些调用.


TGn*_*nat 5

您是否反对使用内容页面的Title属性?

<%@ Page Title="Your Page Title" Language="vb" AutoEventWireup="false" MasterPageFile="~/MasterPages/...
Run Code Online (Sandbox Code Playgroud)

您还可以在页面加载中以编程方式访问此...