ASP.NET: Наличие общего заголовка страницы на главной странице с каждой страницей, добавляющей заголовок для конкретной страницы? - PullRequest
0 голосов
/ 26 августа 2010

Моя главная страница выглядит так:

<head runat="server">
    <title>
        <asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
    </title>

Контентные страницы выглядят так:

<asp:Content ID="TitleContent1"
     ContentPlaceHolderID="PageTitlePlaceHolder" runat="Server">
    My Page
</asp:Content>

Это работает путем размещения заголовка страницы содержимого на странице («Моя страница» в данном примере). Теперь я хочу добавить глобальный префикс к заголовку на моей главной странице для имени сайта. Итак, я хочу:

<head runat="server">
    <title>
        Example.com:
        <asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
    </title>

Однако, когда я делаю это, страницы содержимого по-прежнему отображаются без «Example.com» в плитке, как будто это игнорируется.

Почему это происходит и как мне этого добиться?

Ответы [ 6 ]

3 голосов
/ 26 августа 2010

Попробуйте это в коде MasterPage:

void MasterPage_PreRender(object sender, EventArgs e)
{
    Page.Title = "Example.com - " + Page.Title;
}
2 голосов
/ 15 марта 2012

Удалите тег заголовка с главной страницы и используйте предоставленный Мартин код. Теперь на ваших страницах контента установите заголовок в теге страницы в верхней части файла, например:

<%@ Page ... Title="Contact" %>
1 голос
/ 14 ноября 2017

Обходной путь, который я нашел наиболее приемлемым, заключается в использовании нескольких элементов управления ContentPlaceHolder.

<head runat="server">
    <title>
        <asp:ContentPlaceHolder ID="cphMasterTitle" runat="server">Example.com: </asp:ContentPlaceHolder>
        <asp:ContentPlaceHolder ID="cphSubtitle" runat="server" />
    </title>
</head>

Обратите внимание, что любой другой контент внутри <title>, включая пробелы, удаляется.Любой интервал между содержимым ContentPlaceHolder должен быть выполнен внутри элементов управления.

Я также использовал <asp:Literal runat="server">Example.com: </asp:Literal>, когда не хочу отображать заполнитель для страниц содержимого.

0 голосов
/ 28 апреля 2019

на главной странице, положить

    <title>websitename.com -<%: Page.Title.ToString() %> </title>

где websitename.com - доменное имя веб-сайта.

, а затем на странице «Каждое содержимое» поместите заголовок.

0 голосов
/ 15 марта 2012

Два варианта. один удалить runat=server из <head> (Джеффриду)

Два использует Page.Title в качестве строки. (Martin)

Я предпочитаю использовать объект, который я где-то написал, который также добавляет заголовок для Facebook, описание для поисковых систем и т. Д. Для любой страницы, которую я использовал. Этот объект хранит заголовок страницы в трех строках - одна до, одна - заголовок страницы, одна после.

0 голосов
/ 26 августа 2010

удалить "runat =" server "" , но я не уверен, попробуйте

<head>
    <title>
        Example.com:
        <asp:ContentPlaceHolder ID="PageTitlePlaceHolder" runat="server" />
    </title>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...