在使用母版页的asp内容上设置页面标题

时间:2014-02-07 01:53:46

标签: c# asp.net master-pages webpage

好的,这是一种奇怪的方式,我知道我应该在使用母版页时在每个页面的Page_Load上完成它,但有没有解决这个问题的方法?如果我可以帮助它,我不想重建页面,如果我只能在<asp:content></asp:content>上插入标题,那就更容易了。

如果有人碰到这个或者可能有一个好方法的建议,我知道jquery可以做到document.title =''但我听说它不是SEO友好。

谢谢!

4 个答案:

答案 0 :(得分:14)

您仍然可以在使用母版页的每个页面中设置标题。在标记中: -

<%@ Page Title="Your Title" Language="C#" MasterPageFile="~/_masterpages/... etc

或代码: -

protected override void OnLoad(EventArgs e)
{
    Page.Title = "Your Title";
    base.OnLoad(e);
}

答案 1 :(得分:7)

您可以在主页中放置内容占位符作为..

<asp:ContentPlaceHolder id="head" runat="server"> </asp:ContentPlaceHolder>

之后在内容页面中将其引用添加为..

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<title>  Your title goes here.  </title>
</asp:Content>

答案 2 :(得分:3)

Master页面中更简单的解决方案 &lt;%:Page.Title%&gt; - 主标题就在这里

在内容页面的第一行 &lt;%@ Page Title =&#34;您的标题&#34;语言=&#34; C#&#34; MasterPageFile =&#34;〜/ _masterpages / ... etc

答案 3 :(得分: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"; 
    }