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

PageTitle vs Заголовок тега в asp.net

Я использую asp.net. Я заметил, что мы можем настроить заголовок страницы (статический и динамический оба) двумя способами:

  • В директиве страницы есть атрибут Title:

      <%@ Page Language="C#" Inherits="_Default"  Title="My Title" ......%>
    
  • У нас также есть тег <title> на странице:

    <title runat="server" id="MyTitle"> My Title</title>
    

Оба могут быть доступны в файле с кодом:

    MyTitle.Text = "Title from Code behind";
    Page.Title = "Page Title from CS";

И я нашел, что директива page переопределяет заголовок html. Итак, какой из них мы должны использовать и почему?

4b9b3361

Ответ 1

Самое большое отличие состоит в том, что при MyTitle.Text вам необходимо украсить элемент Title атрибутами id AND runat и запомнить его имя, чтобы вы могли ссылаться на него. Также доступ к этому значению не так просто с дочерних страниц, когда вы используете Masterpage, например.

С другой стороны, Page.Title является общим для каждой страницы, поэтому он более универсален, на мой взгляд. Каждый новый разработчик, с которым вы будете работать, не должен будет ничего узнавать, просто используйте формат Page.Title..

Итак, мой голос пойдет на "традиционный" Page.Title

Какой бы вы ни хотели использовать, придерживайтесь его, поэтому вы не будете смешивать различные способы настройки заголовка. Таким образом, вам не придется беспокоиться о том, какое событие происходит раньше, или о том, что ваш коллега переписывает ваши ценности.

Ответ 2

Короткий ответ: (это зависит от ваших потребностей). я объясню.

  • Это зависит от того, будет ли ваш заголовок изменен во время выполнения.

Длинный ответ:

Вот мое наблюдение (с небольшим тестом):

Я установил title в Page directive:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Exampales_test" Title="ppppppppp" %>

Я также устанавливаю через html:

<head runat="server" ID="hhh">
     ...
    <title runat="server">fffffffff</title>
</head>

У меня есть этот тестовый код:

 protected override void OnPreInit(EventArgs e)
    {
     // <-----  breakpoint here (A)
        base.OnPreInit(e);
     // <-----  breakpoint here (B)
    }


protected void Page_Load(object sender, EventArgs e)
{ // <-----  breakpoint here (C)
    this.Title = "cccccccc";
}

Visual:

enter image description here

Теперь посмотрим:

Когда я нажимаю Run:

Страница имеет значение html title (ffffff)

enter image description here

Также в конце PreInit

enter image description here

Исследование OnInit показывает, что оно уже изменилось (например, если вы хотите точно знать, на каком этапе - это можно сделать) до ppppppppp

enter image description here

И, конечно, последнее событие (среди того, о чем мы говорили) - это page_load: он меняет значение:

enter image description here

И значение:

enter image description here

Итак, что выбрать?

Если ваш код меняет title динамически (я имею в виду время выполнения), не используйте разметку html вообще или директиву страницы.

например. если ваш код (например) имеет ASCX и что ACSX должен изменить заголовок, тогда просто используйте код (не директиву или HTML-разметку).

Как вы уже заметили - значение, которое выигрывает, - это тот, кто встречается последним (временная шкала)

Он начинается с значения разметки html, но затем код на стороне сервера начинает активироваться и изменяет значения.

Ответ 3

Вот хорошая статья о различиях. Они в основном делают то же самое. Это просто ЧТО вы хотите это сделать.

Пока <title> можно установить статически на веб-странице ASP.NET, в во многих сценариях название зависит от данных, отображаемых в стр. Например, веб-сайт может иметь ShowProduct.aspx? ID = productID. Вместо использования статического <title>, значение <title> в идеале должно быть именем (то есть продукт, ProductID которого равен значение productID, прошедшее через запрос). К сожалению, в ASP.NET версии 1.x, устанавливая любые элементы метаданных HTML (например, <title>) потребовалось, чтобы разработчик добавил элемент управления Literal в надлежащее место в разметке HTML, а затем установить его значение программно в классе кода страницы ASP.NET.

Скопировано здесь http://www.4guysfromrolla.com/articles/051006-1.aspx