从主页面检索页面标题

问题描述:

为了管理我的页面上的页面标题,我在页眉中有一个带有ContentPlaceHolder的主页面。从主页面检索页面标题

<head runat="server"> 
    <asp:ContentPlaceHolder runat="server" ID="headContent"> 
    </asp:ContentPlaceHolder> 
</head> 

在我的每个网页,我添加了meta标签和页面标题如下:

<asp:content id="Header" contentplaceholderid="headContent" runat="server"> 
    <meta name="keywords" content="keyword1, keyword2" /> 
    <meta name="description" content="page description" /> 
    <%Page.Title = "My page title";%> 
</asp:content> 

我无法通过将Page.Title在页面的OnInit方法修改页面代码。

我需要访问母版页的代码隐藏中的页面标题,但是当我使用Page.Title时,我总是会得到一个空标题。

使用<%Page.Title = "My page title";%>隐含告诉在ASP.NET中的页面的呈现阶段执行该embedded code block

这是什么意思?在页面呈现阶段之前,您将无法获得此值。假设你想要比渲染过程中早一点得到这个值。这就是为什么你得到空字符串。

的解决方法可能是在设置您的<%@ Page指令Title财产在你的页面例如开头:

<%@ Page Title="My Title Goes Here" Language="C#" ... %> 

通过设置这一点,你就可以从你的主人页面访问Page.Title财产发生在页面呈现之前的一点点时间。

只需使用

<title>My page title</title> 
+2

通过使用此构造,您将设置页面的标题,但是您将无法通过“Page.Title”属性获取此值 – Alex