Добавление заголовка в contentplaceholder добавляет второй пустой тег заголовка - PullRequest
5 голосов
/ 16 декабря 2008

Моя главная страница имеет заполнитель содержимого в теге head.

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

Есть идеи, как решить эту проблему?

Ответы [ 6 ]

6 голосов
/ 16 декабря 2008

Согласно спецификации W3C :

Каждый HTML-документ должен иметь элемент TITLE в разделе HEAD.

Таким образом, платформа ASP.Net соответствует стандартам и добавляет пустой тег заголовка на вашу страницу, чтобы помочь вам в достижении правильной разметки - она ​​не знает, что вы собираетесь добавить ее через заполнитель содержимого.

Под классическим ASP.Net вы можете выбрать:

  1. Используйте директиву @page Title для установки содержимого этого тега
  2. Используйте свойство Page.Title из своего кода для установки значения программным путем.

Если вы используете ASP.Net MVC, файл Site.Master по умолчанию имеет следующий текст по умолчанию:

<title><%= Html.Encode(ViewData["Title"]) %></title>

И контроллер по умолчанию имел:

ViewData["Title"] = "Home";

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

Обычно я использую заполнитель содержимого HeadContent для добавления статических сценариев и ссылок CSS для конкретной страницы.

4 голосов
/ 04 марта 2009

Я столкнулся с той же проблемой и нашел решение , которое, кажется, работает. Это довольно забавно, но в то же время довольно просто. Просто добавьте еще один заголовок в заголовок, поместите в него атрибут runat = "server" и установите для его видимости значение false:

<title visible="false" runat="server"><%-- hack to turn the auto title off --%></title>
2 голосов
/ 04 марта 2009
0 голосов
/ 31 марта 2010

Казалось бы, лучший способ установить заголовок - использовать атрибут attritube в объявлении разметки здесь:

<%@ Page Title="PAGE NAME HERE" Language="C#" MasterPageFile="~/Controls/MasterPage/MasterPage.master"
AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>

ИЛИ Просто установите его в page_load с помощью

Page.Title = "Your page title"

Надеюсь, что это несколько.

0 голосов
/ 19 января 2010

Очистить атрибут runat = "server" в теге masterpages

0 голосов
/ 16 декабря 2008

В директиве @Page есть атрибут Title для установки заголовка страницы. Он также доступен как свойство в элементе управления Page.

Вам не нужно явно объявлять a внутри тега через заполнитель содержимого.

По крайней мере, для базовых страниц ASP.NET, использующих MasterPages. Не уверен в ASP.NET MVC.

...