【问题标题】:ASP.NET / C# Page TitleASP.NET / C# 页面标题
【发布时间】:2013-02-18 05:39:26
【问题描述】:

好的,我知道这是一个愚蠢的问题,我真的不知道要搜索什么或如何搜索这个问题。 问题是我将页面标题值存储到数据库中,然后从数据库中检索值并使用这段代码this.Title = pageTitle; 将该标题分配给页面,它呈现如下

    <head><title>
          page title here
    </title>

但我的经理希望我让它呈现如下

    <head><title>page title here</title>

我不知道要搜索什么或如何搜索 :( 我在 IIS 6 和 Windows Server 2003 上使用 ASP.NET 4 和 C# 4(如果有帮助,请使用 SQL Server 2008 R2)

编辑:我试过了

     <head><title><asp:Literal ID="ltrlMasterTitle" runat="server" Text=""</asp:Literal></title>

并使用以下代码将其设置为我想要的值

    Literal lblMasterTitle = (Literal)this.Page.Master.FindControl("lblMasterTitle");
    if (!string.IsNullOrWhiteSpace(pageTitle))
        lblMasterTitle.Text = pageTitle;

但它也以相同的方式呈现。 PS:我尝试使用 Jonathan Hanson 建议的解决方案,但我无法弄清楚母版页和子页之间的数据传输:/

另一个编辑:我已经尝试了乔纳森汉森链接中建议的方法,但也呈现相同的 o.O

【问题讨论】:

  • 那里有什么?只是一样。
  • 你能问你的经理为什么它应该呈现不同的方式吗?
  • 我经常这样做,我的页面上通常有一个sqldatasource,
  • 如果您使用 ASP.Net 网络表单,则很难重新格式化已呈现的内容。

标签: asp.net c#-4.0 webforms page-title


【解决方案1】:

一种选择是使用这样的嵌入式代码块:

<head><title><%=PageTitle%></title>

然后在你的代码后面:

public String PageTitle
{
  get;
  set;
}

那么……

PageTitle = pageTitle;

这应该可以解决问题——尽管有点难看。话又说回来,这就是经理们对像这样的愚蠢废话进行微观管理的结果。

【讨论】:

  • 哦,它导致 标签被渲染两次,因为一个标签来自母版页:(
  • 希望我能为你的幽默点赞,但我还没有这个特权:|
  • 您可以将代码块移动到母版页,然后将此代码也移动到母版页。您也可以只将属性放在母版页中。您可以从您的页面类访问母版页类。
  • 这就是我无法弄清楚如何在子页面中访问大师类的公共属性
  • @MuhammadMamoorKhan 这应该会有所帮助。 dotnetbyexample.blogspot.com/2007/10/…
【解决方案2】:

你可以在page_load中写

this.Page.Title = YourTitle;

【讨论】:

  • this.Page.Titlethis.Title有什么区别吗?
【解决方案3】:

这是我的答案,以便任何有这种愚蠢情况的人都可以从我的经验中获得一些智慧,在我把头撞到墙上一个星期之后,我认为这无法完成。

正如我所说,这在当时可用的最新版本中无法实现,现在我不明白为什么我的答案会有反对票,我不能接受其他人的答案,因为他们没有实现我想问什么,如果您要投反对票,请至少发表评论,说明原因

【讨论】:

  • 无法控制,可惜:(
【解决方案4】:

如果您正在使用母版页,请尝试以下操作:

在母版页中,转到头部并放置:

<head runat="server" id="yourHead">
       <asp:ContentPlaceHolder runat="server" id="holderHead"></asp:ContentPlaceHolder>
       <title>Your Title</title>
</head>

现在,在其他页面的 html 代码中输入:

<asp:Content ID="content" ContentPlaceHolderID="holderHead" runat="Server">
   <title>Your Title - Contact</title>
</asp:Content>

它对我有用。

附:。对不起我的英语不好!

【讨论】:

  • 您能分享一下渲染到浏览器的输出 html 吗?
【解决方案5】:

为什么不直接使用文字控件?

    Literal ltPageTitle = (Literal)Master.FindControl("ltPageTitle"); // If the literal is on a master page 
    // Literal ltPageTitle = (Literal)Page.FindControl("ltPageTitle"); 
    ltPageTitle.Text = "Title"; // Where Title is the title you want for the page

这甚至为您提供了额外的功能,例如使用数据库记录来命名您的页面或您能想到的任何其他内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2021-07-25
    相关资源
    最近更新 更多