ASP.NET:在母版页中具有公共页面标题,并且每页都添加特定于页面的标题?

ASP.NET:在母版页中具有公共页面标题,并且每页都添加特定于页面的标题?,asp.net,master-pages,contentplaceholder,page-title,html-title,Asp.net,Master Pages,Contentplaceholder,Page Title,Html Title,我的母版页看起来像: <head runat="server"> <title> <asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" /> </title> 内容页看起来像: <asp:Content ID="TitleContent1" ContentPlaceHolderID="PageTitlePlaceHold

我的母版页看起来像:

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

内容页看起来像:

<asp:Content ID="TitleContent1"
     ContentPlaceHolderID="PageTitlePlaceHolder" runat="Server">
    My Page
</asp:Content>

我的页面
这是通过在页面上放置特定于内容页面的标题来实现的(本例中为“我的页面”)。现在,我想为网站名在母版页中的标题添加一个全局前缀。所以我想:

<head runat="server">
    <title>
        Example.com:
        <asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
    </title>

Example.com:
然而,当我这样做的时候,内容页面仍然在互动程序中没有“Example.com”的情况下呈现,就好像它被忽略了一样


为什么会发生这种情况?我如何才能做到这一点?

请在母版页的代码隐藏中尝试:

void MasterPage_PreRender(object sender, EventArgs e)
{
    Page.Title = "Example.com - " + Page.Title;
}

在母版页的代码隐藏中尝试以下操作:

void MasterPage_PreRender(object sender, EventArgs e)
{
    Page.Title = "Example.com - " + Page.Title;
}
删除“runat=“server”“,但我不确定,请尝试

<head>
    <title>
        Example.com:
        <asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
    </title>

Example.com:
删除runat=“server”“但我不确定,请尝试

<head>
    <title>
        Example.com:
        <asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
    </title>

Example.com:

从母版页中删除标题标签并使用提供的代码。现在,在内容页中,在文件顶部的页面标记中设置标题,如下所示:

<%@ Page ... Title="Contact" %>

从母版页中删除标题标签并使用提供的代码。现在,在内容页中,在文件顶部的页面标记中设置标题,如下所示:

<%@ Page ... Title="Contact" %>

两个选项。 一个是从
中删除
runat=server
(jefferydu)

二是使用页面。标题作为字符串。(马丁)

我更喜欢使用我在某处写的一个对象,为我使用的任何页面添加facebook标题、搜索引擎描述等。此对象将页面标题存储在三个字符串中—一个在前面,一个是页面标题,一个在后面。

两个选项。 一个是从
中删除
runat=server
(jefferydu)

二是使用页面。标题作为字符串。(马丁)


我更喜欢使用我在某处写的一个对象,为我使用的任何页面添加facebook标题、搜索引擎描述等。此对象将页面标题存储在三个字符串中—一个在前面,一个是页面标题,一个在后面。

我发现最可以接受的解决方法是使用多个
ContentPlaceHolder
控件


Example.com:
请注意,
中的任何其他内容(包括空格)都会被删除。
ContentPlaceHolder
内容之间的任何间距都需要在控件内完成


当我不想向内容页公开占位符时,我也使用了
Example.com:

我发现最可以接受的解决方法是使用多个
ContentPlaceHolder
控件


Example.com:
请注意,
中的任何其他内容(包括空格)都会被删除。
ContentPlaceHolder
内容之间的任何间距都需要在控件内完成


我还使用了
Example.com:
当我不想向内容页公开占位符时。

在母版页中,将

    <title>websitename.com -<%: Page.Title.ToString() %> </title>
websitename.com-
其中websitename.com是网站的域名


然后在每个内容页中,放置一个标题。

在母版页中,放置

    <title>websitename.com -<%: Page.Title.ToString() %> </title>
websitename.com-
其中websitename.com是网站的域名


然后在每一个内容页上,写上一个标题。

它不起作用。在代码中,当执行这一行时,Page.Title属性为blank,请尝试向下移动母版页的页面生命周期。。。母版页加载中的属性是空的吗?想想你在这里做什么。你的意思是Page.Title=Page.Title。您需要在内容占位符中引用页面内容,如:
page.Title=“我的网站名称-”+MyContentPlaceHolder.page.Title
将其放入母版页页面加载事件中。它不起作用。在代码中,当执行这一行时,Page.Title属性为blank,请尝试向下移动母版页的页面生命周期。。。母版页加载中的属性是空的吗?想想你在这里做什么。你的意思是Page.Title=Page.Title。您需要在内容占位符中引用页面内容,如:
page.Title=“我的网站名称-”+MyContentPlaceHolder.page.Title
将其放入母版页页面加载事件中。