我有一个奇怪的问题Title
,在代码级别设置我的 ASP.NET 页面的属性没有任何效果。它也不会抛出异常。我的类是类的派生类,Page
但我没有覆盖任何关于标题的内容。
在代码中我有这一行:
Title = "About";
调试时,我在该行,我将光标按常规放在标题上,它显示""
一个空字符串,这是预期的,我走下那行,期望(显然)Title
有值"About"
但是当我悬停时,我仍然得到一个空字符串。属性设置不起作用。是的,它在输出页面中也是空的。好吧,我错过了什么吗?
我有一个奇怪的问题Title
,在代码级别设置我的 ASP.NET 页面的属性没有任何效果。它也不会抛出异常。我的类是类的派生类,Page
但我没有覆盖任何关于标题的内容。
在代码中我有这一行:
Title = "About";
调试时,我在该行,我将光标按常规放在标题上,它显示""
一个空字符串,这是预期的,我走下那行,期望(显然)Title
有值"About"
但是当我悬停时,我仍然得到一个空字符串。属性设置不起作用。是的,它在输出页面中也是空的。好吧,我错过了什么吗?
如果要从 C# 代码设置标题,请确保不要在 aspx 页面中设置标题。(即使是空白标题也会覆盖 C# 代码中的标题)
以下代码将用空字符串覆盖 C# 代码中设置的 Title:
<%@ Page Language="C#" Title="" ... %>
您必须删除该Title
属性才能在 C# 代码中设置它:
<%@ Page Language="C#" ... %>
我对 Title 属性也有类似的问题。我的问题又回到了<%@ Page %>
缺少 Title 属性的指令。确保已将 Title 属性添加到 ASPX 文件的 Page 指令中,例如:
<%@ Page Language="C#" Title="Default Title" %>
我正在为我的页面切换到新的母版页,而我的 TITLES 停止工作。
我的旧的工作母版页有这个
<head runat="server">
我新的失败的母版页有这个
<head>
所以它就像确保标签中包含 runat="server" 一样简单。
这个怎么样(有点奇怪但仍然:)):
步骤 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";
...
}
我有一个类似的问题(Me.Title
在代码隐藏中设置属性并没有改变渲染页面的实际标题)。
在我从指令中完全删除Title 属性后,一切都开始按预期工作。<%@ Page %>
我在 MasterPage 中有这个<head>
:
<title><%= Page.Title %></title>
(这一点似乎不是绝对必要的,因为 ASP.NET 无论如何都会添加一个<title>
元素<head>
......但没有它,Visual Studio HTML 验证器会抱怨“元素'标题'出现的次数太少”所以我把它留在那里。 )
这仅在 PreRender 中有效
protected void Page_PreRender(object sender, EventArgs e)
{
Page.Title = "Some title";
}
<%@ 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" ..
<%@ Page meta:resourcekey="PageResource1" culture="auto"
你看?
始终检查meta:resourcekey
.
事实证明,您有一个.resx
包含记录的资源文件
PageResource1.Title
具有空值。
如果你忘了它,你所要做的就是使用
protected void Page_Load(object sender, EventArgs e)
{
Title = "My tilte";
上面的答案都是正确的。您可以从<%@ Page
指令中删除 Title 或确保它不是空白 ( Title=""
)。所以,如果你有Title="Foo"
,你可以在代码中改变它。如果您Title=""
从 Page 指令中删除,您可以在代码中更改它。
尝试在页面DataBind之后设置标题:
public override void DataBind()
{
base.DataBind(true);
Title = "Ballout";
}