在使用母版页的 asp 内容上设置页面标题
Posted
技术标签:
【中文标题】在使用母版页的 asp 内容上设置页面标题【英文标题】:Set Page Title on asp content where it uses master page 【发布时间】:2014-03-04 06:44:28 【问题描述】:好吧,这是一种奇怪的做法,我知道在使用 Masterpage 时我应该在每个页面的 Page_Load 上都这样做,但是有没有办法解决这个问题?如果可以的话我不想重建页面,如果我只能在<asp:content></asp:content>
上插入标题会更容易。
如果有人遇到过这个问题,或者有一个好的方法建议,我知道 jquery 可以做到 document.title ='' 但我听说它对 SEO 不友好。
谢谢!
【问题讨论】:
没有什么可以通过 Content 控件完成;仅来自代码隐藏。 【参考方案1】:我知道这是一个较老的问题,但对我来说绝对有用的是在 MasterPage 的标题标签中设置一个 Literal 控件,如下所示:
<title><asp:Literal runat="server" id="pagetitle" Text="MyTitle"></asp:Literal></title>
然后,在内容页面中,将其放入 Page_Load 方法中:
Literal myTitleLiteral = (Literal)Master.FindControl("pagetitle");
if (myTitleLiteral != null)
myTitleLiteral.Text = "Test Title";
【讨论】:
【参考方案2】:母版页中更简单的解决方案 - 主标题放在这里
在内容页面的第一行
【讨论】:
【参考方案3】:您可以在母版页中放置一个内容占位符作为..
<asp:ContentPlaceHolder id="head" runat="server"> </asp:ContentPlaceHolder>
之后在内容页面中添加其引用为..
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<title> Your title goes here. </title>
</asp:Content>
【讨论】:
天哪!我很兴奋,我不知道你能做到这一点。如果可行,我会给你加 20!【参考方案4】:您仍然可以在使用 MasterPage 的每个页面中设置标题。在标记中:-
<%@ Page Title="Your Title" Language="C#" MasterPageFile="~/_masterpages/... etc
或者在代码中:-
protected override void OnLoad(EventArgs e)
Page.Title = "Your Title";
base.OnLoad(e);
【讨论】:
是的,这是我试图避免的,因为我必须重建页面。谢谢你以上是关于在使用母版页的 asp 内容上设置页面标题的主要内容,如果未能解决你的问题,请参考以下文章