在使用母版页的 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 内容上设置页面标题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.net 页面中获取母版页的 Div?

Google Adword 和 asp.net 母版页

ASP.NET内容页中访问母版页中的对象

asp.net 母版页的 JCrop 问题

使用母版页时在网页上设置背景图片

asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件