Настройка заголовка страницы не работает
У меня странная проблема, что установка свойства Title
моей страницы ASP.NET не имеет никакого эффекта на уровне кода. Это тоже не исключение. Мой класс является производным классом класса Page
, но я не переопределяю ничего о заголовке.
В коде у меня есть эта строка:
Title = "About";
Во время отладки, я нахожусь в этой строке, я поместил свой курсор над заголовком как обычный, и он отображает ""
пустую строку, которая, как ожидается, я убираю эту строку, ожидая (очевидно) Title
имеют значение "About"
, но когда я наводил курсор, я все равно получаю пустую строку. Настройка свойств не работает. И да, он тоже пуст на странице вывода. Ну, я что-то упустил?
Ответы
Ответ 1
Если вы хотите установить код Title from С#, убедитесь, что вы не устанавливаете заголовок на странице aspx. (даже пустой заголовок будет переопределять заголовок из кода С#)
Этот следующий код переопределит заголовок, заданный в коде С#, пустой строкой:
<%@ Page Language="C#" Title="" ... %>
Вам нужно удалить свойство Title
, чтобы иметь возможность установить его в коде С#:
<%@ Page Language="C#" ... %>
Ответ 2
У меня была аналогичная проблема с свойством Title. Проблема с минами вернулась к директиве <%@ Page %>
, в которой отсутствует свойство Title. Убедитесь, что вы добавили свойство Title в директиву страницы в файле ASPX, например:
<%@ Page Language="C#" Title="Default Title" %>
Ответ 3
Я перешел на новую страницу мастера для моих страниц, и мои TITLES перестали работать.
Моя старая рабочая страница имела эту
<head runat="server">
Моя новая, неудавшаяся Мастер-страница имела это
<head>
Итак, это было так же просто, как убедиться, что в теге был runat = "server".
Ответ 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";
...
}
Ответ 5
У меня была аналогичная проблема (установка свойства Me.Title
в кодировке не изменила фактическое название отображаемой страницы).
Все началось, как ожидается, после того, как я полностью удалю атрибут Title из директивы <%@ Page %>
.
У меня это в MasterPage <head>
:
<title><%= Page.Title %></title>
(Этот бит не кажется абсолютно необходимым, так как ASP.NET добавит элемент <title>
к <head>
в любом случае... но без него, валидатор Visual Studio HTML жалуется, что "элемент" title "появляется слишком несколько раз", поэтому я оставляю его там.)
- Visual Studio 2010 Pro
- .NET 4.0
- IIS 7.0
Ответ 6
эта работа работает только в PreRender
protected void Page_PreRender(object sender, EventArgs e)
{
Page.Title = "Some title";
}
Ответ 7
<%@ 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" ..
Ответ 8
<%@ Page meta:resourcekey="PageResource1" culture="auto"
Ты видишь?
Всегда проверяйте существование meta:resourcekey
.
Оказывается, у вас есть .resx
ресурсов .resx
, содержащий запись
PageResource1.Title
с пустым значением.
Если вы забудете об этом, все, что вам нужно сделать, это использовать
protected void Page_Load(object sender, EventArgs e)
{
Title = "My tilte";
Ответ 9
Лучшие ответы оба правильные. Вы можете удалить заголовок из директивы <%@Page
или убедиться, что он не пустой (Title=""
). Итак, если у вас есть Title="Foo"
, вы можете изменить его в коде. Если вы удалите Title=""
из директивы Page, вы можете изменить его в коде.
Ответ 10
Попробуйте установить заголовок после страницы DataBind:
public override void DataBind()
{
base.DataBind(true);
Title = "Ballout";
}