Подтвердить что ты не робот

Настройка заголовка страницы не работает

У меня странная проблема, что установка свойства Title моей страницы ASP.NET не имеет никакого эффекта на уровне кода. Это тоже не исключение. Мой класс является производным классом класса Page, но я не переопределяю ничего о заголовке.

В коде у меня есть эта строка:

Title = "About";

Во время отладки, я нахожусь в этой строке, я поместил свой курсор над заголовком как обычный, и он отображает "" пустую строку, которая, как ожидается, я убираю эту строку, ожидая (очевидно) Title имеют значение "About", но когда я наводил курсор, я все равно получаю пустую строку. Настройка свойств не работает. И да, он тоже пуст на странице вывода. Ну, я что-то упустил?

4b9b3361

Ответ 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";
}