我的母版页如下所示:
<head runat="server">
<title>
<asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
</title>
内容页面如下所示:
<asp:Content ID="TitleContent1"
ContentPlaceHolderID="PageTitlePlaceHolder" runat="Server">
My Page
</asp:Content>
这是通过在页面上放置特定于内容页面的标题(本例中为“My Page”)来实现的。现在,我想在母版页中为站点名称的标题添加一个全局前缀。所以我想:
<head runat="server">
<title>
Example.com:
<asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
</title>
然而,当我这样做时,内容页面仍然呈现在标题中没有"Example.com“的情况下,就像被忽略了一样。
为什么会发生这种情况,我如何实现这一点?
发布于 2010-08-26 10:49:11
在MasterPage的后台代码中尝试以下代码:
void MasterPage_PreRender(object sender, EventArgs e)
{
Page.Title = "Example.com - " + Page.Title;
}
发布于 2012-03-15 15:11:35
从母版页中删除title标记,并使用Martin提供的代码。现在,在您的内容页面中,在文件顶部的Page标记中设置标题,如下所示:
<%@ Page ... Title="Contact" %>
发布于 2017-11-14 05:47:11
我发现最可接受的变通方法是使用多个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>
。
https://stackoverflow.com/questions/3571618
复制相似问题