26

我有一个奇怪的问题Title,在代码级别设置我的 ASP.NET 页面的属性没有任何效果。它也不会抛出异常。我的类是类的派生类,Page但我没有覆盖任何关于标题的内容。

在代码中我有这一行:

Title = "About";

调试时,我在该行,我将光标按常规放在标题上,它显示""一个空字符串,这是预期的,我走下那行,期望(显然)Title有值"About"但是当我悬停时,我仍然得到一个空字符串。属性设置不起作用。是的,它在输出页面中也是空的。好吧,我错过了什么吗?

4

10 回答 10

44

如果要从 C# 代码设置标题,请确保不要在 aspx 页面中设置标题。(即使是空白标题也会覆盖 C# 代码中的标题)

以下代码将用空字符串覆盖 C# 代码中设置的 Title:

<%@ Page Language="C#" Title="" ... %>

您必须删除该Title属性才能在 C# 代码中设置它:

<%@ Page Language="C#" ... %>
于 2013-11-25T21:11:17.927 回答
9

我对 Title 属性也有类似的问题。我的问题又回到了<%@ Page %>缺少 Title 属性的指令。确保已将 Title 属性添加到 ASPX 文件的 Page 指令中,例如:

<%@ Page Language="C#" Title="Default Title" %>
于 2011-08-24T16:50:40.277 回答
7

我正在为我的页面切换到新的母版页,而我的 TITLES 停止工作。

我的旧的工作母版页有这个

<head runat="server">

我新的失败的母版页有这个

<head>

所以它就像确保标签中包含 runat="server" 一样简单。

于 2014-10-23T22:47:25.330 回答
4

这个怎么样(有点奇怪但仍然:)):

步骤 1:将 ContentPlaceHolder 添加到母版页的标题标签

...
<title>
    <asp:ContentPlaceHolder ID="TitleContentPlaceHolder" runat="server"></asp:ContentPlaceHolder>
</title>
...

第 2 步:将以下内容添加到内容页面

...
<asp:Content ContentPlaceHolderID="TitleContentPlaceHolder" runat="server" ID="TitleContent">
    <asp:Literal runat="server" ID="TitleLabel"></asp:Literal>
</asp:Content>
...

第 3 步:尝试设置标题(例如在页面加载时)

protected void Page_Load(object sender, EventArgs e)
    {
        ...
        TitleLabel.Text = "Some title";
        ...
    }
于 2011-08-24T16:01:09.277 回答
1

我有一个类似的问题(Me.Title在代码隐藏中设置属性并没有改变渲染页面的实际标题)。

在我从指令中完全删除Title 属性后,一切都开始按预期工作。<%@ Page %>

我在 MasterPage 中有这个<head>

<title><%= Page.Title %></title>

(这一点似乎不是绝对必要的,因为 ASP.NET 无论如何都会添加一个<title>元素<head>......但没有它,Visual Studio HTML 验证器会抱怨“元素'标题'出现的次数太少”所以我把它留在那里。 )

  • 视觉工作室 2010 专业版
  • .NET 4.0
  • IIS 7.0
于 2012-12-14T21:51:04.693 回答
1

这仅在 PreRender 中有效

protected void Page_PreRender(object sender, EventArgs e)
    {
        Page.Title = "Some title";

    }
于 2015-10-05T10:53:05.377 回答
0
<%@ Master ..
<head runat="server">
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title><%: Page.Title %></title>

..

<%@ Page Title="ABOUT" ..
于 2013-11-28T20:40:07.800 回答
0
<%@ Page meta:resourcekey="PageResource1" culture="auto"

你看?
始终检查meta:resourcekey.
事实证明,您有一个.resx包含记录的资源文件

PageResource1.Title

具有空值。
如果你忘了它,你所要做的就是使用

protected void Page_Load(object sender, EventArgs e)
{
    Title = "My tilte";
于 2018-11-14T11:51:04.860 回答
0

上面的答案都是正确的。您可以从<%@ Page指令中删除 Title 或确保它不是空白 ( Title="")。所以,如果你有Title="Foo",你可以在代码中改变它。如果您Title=""从 Page 指令中删除,您可以在代码中更改它。

于 2019-01-16T19:03:51.833 回答
-3

尝试在页面DataBind之后设置标题:

public override void DataBind()
{
    base.DataBind(true);
    Title = "Ballout";
}
于 2011-12-16T13:08:51.023 回答