我的母版页面如下:
<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”的情况下呈现,就像它被忽略了一样。
为什么会发生这种情况,我该如何实现?
答案 0 :(得分:3)
在MasterPage背后的代码中尝试:
void MasterPage_PreRender(object sender, EventArgs e)
{
Page.Title = "Example.com - " + Page.Title;
}
答案 1 :(得分:2)
从母版页中删除标题标签,然后使用Martin提供的代码。现在,在您的内容页面中,在文件顶部的Page标签中设置标题,如下所示:
<%@ Page ... Title="Contact" %>
答案 2 :(得分: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>
。
答案 3 :(得分:0)
删除“runat =”server“”,但我不确定,试试吧
<head>
<title>
Example.com:
<asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
</title>
答案 4 :(得分:0)
两个选项。
一个是从runat=server
(jefferydu)
<head>
两个使用Page.Title作为字符串。 (马丁)
我更喜欢使用我在某处写的对象,为我使用的任何页面添加了Facebook的标题,搜索引擎的描述等。该对象将页面标题存储在三个字符串中 - 一个在前,一个是页面标题,一个是后面的。
答案 5 :(得分:0)
在主页面中,放入
<title>websitename.com -<%: Page.Title.ToString() %> </title>
其中websitename.com是网站的域名。
,然后在“每个内容”页面中,放置标题。