0

我的母版页如下所示:

<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”的内容页面,就好像它被忽略了一样。

为什么会发生这种情况,我该如何实现?

4

6 回答 6

3

在 MasterPage 后面的代码中试试这个:

void MasterPage_PreRender(object sender, EventArgs e)
{
    Page.Title = "Example.com - " + Page.Title;
}
于 2010-08-26T02:49:11.417 回答
2

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

<%@ Page ... Title="Contact" %>
于 2012-03-15T07:11:34.757 回答
1

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

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

请注意,其中的任何其他内容<title>(包括空格)都将被删除。内容之间的任何间距都ContentPlaceHolder需要在控件内完成。

<asp:Literal runat="server">Example.com: </asp:Literal>当我不想向内容页面公开占位符时,我也使用过。

于 2017-11-13T21:47:10.713 回答
0

两种选择。一个是runat=server<head> (jefferydu)中删除的

二是使用 Page.Title 作为字符串。(马丁)

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

于 2012-03-15T07:41:43.543 回答
0

删除"runat="server"" 但我不确定,试试看

<head>
    <title>
        Example.com:
        <asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
    </title>
于 2010-08-26T02:53:04.077 回答
0

在母版页中,放

    <title>websitename.com -<%: Page.Title.ToString() %> </title>

其中 websitename.com 是网站的域名。

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

于 2019-04-28T17:17:16.453 回答