Asp.net

如何在 ASP.NET 3.5 中從網頁內容頁面設置頁面標題

  • December 31, 2016

我已經閱讀了很多關於如何執行此操作的文章/文章,但我仍然沒有從內容頁面獲取頁面標題設置。我的頁面呈現正常,但我無法從內容頁面獲取標題集(所有頁面都根據母版頁設置了標題)。這是我的母版頁的程式碼隱藏:

Partial Class zSEO
Inherits System.Web.UI.MasterPage
   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
       Page.Header.Title = "Dynamically set in Master page"
   End Sub
End Class

這是母版頁的其餘部分:

<%@ Master Language="VB" 
EnableTheming="true"
Inherits="zSEO" 
CodeFile="zSEO.master.vb" %>
<!DOCTYPE html 
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
        <title></title>
    </head>
<body>
<form id="form1" runat="server">    

<div id="container">
    <div id="content">
        <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        </asp:contentplaceholder>
    </div>    
</div>      
</form>
</body>
</html>

然而,我想在網頁內容頁面中建立頁面的值,並將其放置在我的測試內容頁面中:

Public Partial Class zShowAd
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
   Page.Header.Title = "Dynamically set TITLE value in the content(child) page"
End Sub

End Class

奇怪的是,我無法讓調試器在內容頁面的上面一行停止 - 只能在母版頁的相應行上停止。顯然,我對此感到困惑。

我讀過還有其他方法可以做到這一點,但這似乎可以從我在 Scott Mitchell 的教程中讀到的內容:Dynamicly setting the Page Title in ASP.NET。具體來說,我試圖從文章中遵循這一點: “此外,如果您正在使用母版頁,則此程式碼可以按照所寫的方式從母版頁或使用母版頁的 ASP.NET 頁面工作。在這種情況下, 該區域應該在母版頁中定義,但是 ASP.NET 頁面仍然可以通過 Page.Header 訪問它。”

所以需要發生的是

MasterPage.Master

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
   Me.Page.Title = "Dynamically set in Master page"
End Sub

預設.aspx

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   Me.Page.Title = "Dynamically set in ASPX page"
End Sub

這樣,您的母版頁標題就設置在您的內容頁標題之前。如果您沒有從內容頁面設置標題,則母版頁將是預設標題。如果您確實從內容頁面設置了標題,那麼它將覆蓋它。

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