Asp.net

UpdatePanel asyncpostback 後頁面失去標題

  • June 1, 2015

我最近剛剛注意到,在我從首頁內部執行非同步回發後,我的頁面標題將重置為標準的“無標題頁面” UpdatePanel。在從母版頁內部回發期間,標題不會失去(例如,當我點擊母版頁內的搜尋框按鈕時)。

我假設通過使用不同的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>

這是母版頁。<form>ASP.NET AJAX ScriptManager 放在正文中標記之後的第一件事。

<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>

您反對使用 Content Page 的 Title 屬性嗎?

<%@ Page Title="Your Page Title" Language="vb" AutoEventWireup="false" MasterPageFile="~/MasterPages/...

您還可以在頁面載入中以程式方式訪問它…

我們在我們的一個網站上遇到了這個確切的問題。

立即修復是在母版頁程式碼隱藏 page_load 方法中重置標題。

顯然,當發生 ajax 呼叫時,它正在重新執行母版頁。這導致我們的標題消失了。

例如:

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

更好的解決方法是放棄 MS updatepanel 廢話並開始使用 JSON / jQuery,您實際上可以對呼叫進行一些不錯的控制。

引用自:https://stackoverflow.com/questions/627378