Добавление к заголовку по умолчанию на главной странице asp.net - PullRequest
4 голосов
/ 23 марта 2009

Я использую MVC для добавления заголовка на главную страницу с заполнителем содержимого. Шаблон мастер-страницы MVC по умолчанию использует следующий код:

<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

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

Пример:
(Текст по умолчанию) (текст ContentPlaceHolder)
Моя страница - О нас

<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>My Page - <asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

Я ищу способ сделать это без использования кода позади. Есть идеи?

Ответы [ 5 ]

9 голосов
/ 21 апреля 2009

Кажется, мы должны использовать

<asp:Literal runat="server" Text=" - MySite" />

вместо

<asp:LiteralControl runat="server" Text=" - MySite" />

упоминается в статье, потому что в противном случае мы получим ошибку «Неизвестный тег сервера».

7 голосов
/ 06 апреля 2009

Посмотрев дальше, Фил Хаак фактически опубликовал статью, которая стала решением моего вопроса. Его можно найти по адресу Haacked .

В заключение он сказал, что все, что отрисовывается в голове, отрисовывается как элемент управления, и исправление моего вопроса, приведенного выше, заключается в том, чтобы поместить в заголовок элемент управления asp, чтобы он правильно генерировал текст.

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <asp:LiteralControl runat="server" Text=" - MySite" />
  </title>
</head>
...
4 голосов
/ 20 июня 2009

Почему?

<title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" />
    <%= "- My Site" %>
</title>

Работает так же хорошо. Без хлопот?

2 голосов
/ 17 января 2014

Я предпочитаю использовать это:

<title>Site Name - <%=Page.Title%></title>

Гораздо чище, чем с помощью буквального управления ..

1 голос
/ 23 марта 2009

Если вы используете MVC и передаете заголовок какого-либо объекта с контроллера на страницу, я бы использовал встроенный код для отображения этого.

Мы используем функции вклада MVC для получения типизированных данных непосредственно из данных представления на главной странице, таким образом:

<head>
<title>My Page - <%= ViewData.Get<Model.Page>().Title %></title>
</head>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...