Почему метатег обновления и тег title находятся за пределами тега ‹head› в ASP.NET?

Когда я отображаю страницу в ASP.NET, происходит следующее

</head>
<NOSCRIPT>
<meta http-equiv="REFRESH" content="0;URL=/Default.aspx?id=84&epslanguage=en-GB&jse=0" />
</NOSCRIPT>
<title>Page title goes here.</title>
<body>

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

<title>Page title goes here.</title>
</head>
<body>

Итак, я спрашиваю, откуда, черт возьми, взялся этот метатег обновления, почему он поместил его между моим тегом заголовка и тегом тела, и почему заголовок моей страницы выскочил за пределы заголовка?!

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

Любые идеи, почему браузеры могут интерпретировать это по-разному, и, что более важно, откуда взялся этот новый метатег?

Спасибо! Карл.

Редактировать:

Hi!

Ребята, спасибо за ответы, очень информативно!

Я обнаружил, что проблема заключается в этой строке кода:

Page.Header.Controls.Add(ctrl);

Использование загадочного метатега в этой строке помещает его за пределы тега head. Когда вы комментируете это, тег заголовка возвращается в нужное место, и все в порядке!

Любые дальнейшие мысли?

Спасибо!

Карл.


person Karl    schedule 21.07.2010    source источник
comment
Можете ли вы показать нам немного больше кода   -  person Matthew Abbott    schedule 21.07.2010
comment
Вы можете использовать Fiddler для проверки того, что действительно отправлено сервером, до того, как код будет обработан клиентским браузером. fiddler2.com   -  person Jaroslav Jandek    schedule 21.07.2010


Ответы (3)


На вопрос, почему браузеры будут интерпретировать его по-разному, есть два ответа. Во-первых, вывод firebug, как вы говорите, является сгенерированным источником. Это означает, что он уже прошел определенную обработку, и очевидно, что Firefox делает какое-то волшебство, чтобы сказать: «Ну, это мета и тег заголовка, они должны быть в заголовке, поэтому я положу их туда».

Другие браузеры, с которыми вы сравниваете их необработанный источник, похоже, до того, как браузер попытался разобраться в этом. Я подозреваю, что вы получите то же самое, если просмотрите необработанный исходный код в Firefox (ctrl-u).

Я ожидал, что все браузеры будут делать то же самое, что и Firefox, как вы описали, но если нет, то это не то, о чем стоит беспокоиться. Когда получен неверный HTML-код, подобный этому, у браузеров нет реальных правил того, что делать. Это означает, что браузеры могут делать все, что захотят, от попыток угадать, что вы имели в виду, до полного игнорирования.

Что касается того, что вызывает это, параметр запроса epslanguage исходит от эписервера - я не знаю, было ли это в URL-адресе запроса или нет, поэтому может быть, что он просто сохраняется, или это может быть эписервер, пытающийся перенаправить на страницу с явным языком вместо того, чтобы просто принять значение по умолчанию. К сожалению, я не знаком с эписервером, поэтому ничего более конкретного сказать не могу.

Это, конечно, определенно тот случай, когда что-то на стороне вашего сервера вызывает это.

Вы получаете это для всех страниц из интереса или только для одной конкретной или только в одном конкретном случае?

person Chris    schedule 21.07.2010
comment
Спасибо за ваши ответы, ребята! Я отредактировал свой вопрос, добавив немного больше информации о том, что я узнал! - person Karl; 21.07.2010
comment
@Karl: Можете ли вы опубликовать еще немного своей главной страницы? В основном то, с чего вы начали, поэтому у нас есть полный видимый элемент головы... - person Chris; 21.07.2010

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

Вам, вероятно, следует поделиться большей частью своей мастер-страницы (и веб-формы, использующей ее)!

person Ted Nyberg    schedule 21.07.2010

Может быть, в вашем HEAD-теге нет runat="server"?

person Johan Kronberg    schedule 21.07.2010