【问题标题】:Set Page Title on asp content where it uses master page在使用母版页的 asp 内容上设置页面标题
【发布时间】:2014-03-04 06:44:28
【问题描述】:

好吧,这是一种奇怪的做法,我知道在使用 Masterpage 时我应该在每个页面的 Page_Load 上都这样做,但是有没有办法解决这个问题?如果可以的话我不想重建页面,如果我只能在<asp:content></asp:content> 上插入标题会更容易。

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

谢谢!

【问题讨论】:

  • 没有什么可以通过 Content 控件完成;仅来自代码隐藏。

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


【解决方案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);
      }
      

      【讨论】:

      • 是的,这是我试图避免的,因为我必须重建页面。谢谢你
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 2011-02-21
      相关资源
      最近更新 更多