2010-07-21 12 views
0

Quand je rends une page ASP.NET, ce qui suit arrivePourquoi une balise meta refresh et une balise de titre sont-elles placées en dehors de la balise <head> dans 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> 

Mon masterpage ressemble à ceci:

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

Ce que je demande est, où le diable a cette meta refresh tag vient, pourquoi l'a-t-il mis entre ma tête et ma marque de corps, et pourquoi mon titre de page a sauté hors de la tête ?! Lorsque vous affichez la source générée de la page dans firebug, elle affiche la balise de titre et cette nouvelle méta-balise dans la balise principale, mais en visualisant la source dans n'importe quel navigateur, cela ressemble à ce qui est indiqué ci-dessus. Lors de l'utilisation de wget pour gratter la page, il sort également incorrectement comme indiqué ci-dessus.

Des idées pour lesquelles les navigateurs peuvent interpréter cela de différentes manières, et plus important encore d'où vient cette nouvelle balise meta?

Merci! Karl.

Édition:

Hi!

Merci pour vos réponses les gars, très instructif!

J'ai découvert que le problème est cette ligne de code:

Page.Header.Controls.Add(ctrl); 

Mettre la mystérieuse balise meta en utilisant cette ligne, il met en dehors de la balise de tête. En commentant cela, la balise de titre retombe au bon endroit, et tout va bien!

D'autres réflexions?

Merci!

Karl.

+0

Pouvez-vous nous montrer un peu plus de code –

+0

Vous pouvez utiliser 'Fiddler' pour vérifier ce qui est réellement envoyé par le serveur - avant que le code ne soit manipulé par un navigateur client. http://www.fiddler2.com/ –

Répondre

0

Sur la question de savoir pourquoi les navigateurs vont l'interpréter différemment, il y a deux réponses. Tout d'abord, la sortie firebug comme vous le dites est la source générée. Cela signifie qu'il a déjà subi une certaine quantité de traitement et que firefox fait un peu de magie pour dire "Eh bien, c'est une méta et une balise de titre, elles devraient être dans l'en-tête, donc je les mettrai là."

Les autres navigateurs que vous comparez leur source brute, il semble que ce soit avant que le navigateur a essayé de donner un sens à cela. Je suppose que vous obtiendriez la même chose si vous visualisiez la source brute dans firefox (ctrl-u).

Je m'attendais à ce que tous les navigateurs fassent à peu près la même chose que vous avez décrite firefox, mais si ce n'est pas le cas, ce n'est pas vraiment une préoccupation. Quand un HTML invalide comme celui-ci est reçu, les navigateurs n'ont pas de véritables règles à suivre. Cela signifie que les navigateurs sont invités à faire ce qu'ils veulent en essayant de deviner ce que vous vouliez simplement ignorer complètement. En ce qui concerne la cause, le paramètre de requête epslanguage provient d'episerver - je ne sais pas si cela se trouvait dans l'URL de la requête ou pas, il se peut donc qu'il soit simplement en train de persister ou qu'il soit en train d'épiserver rediriger vers une page avec un langage explicite au lieu de simplement supposer la valeur par défaut. Malheureusement, je ne suis pas familier avec episerver donc je ne peux pas dire plus spécifique à cela.

Il est bien sûr certain qu'il y a quelque chose sur votre serveur qui est à l'origine de ce problème.

Est-ce que vous obtenez cela pour toutes les pages qui ne vous intéressent pas, ou seulement une page spécifique ou juste dans une circonstance spécifique?

+0

Merci pour vos réponses les gars! J'ai édité ma question avec un peu plus d'informations sur ce que j'ai découvert! – Karl

+0

@Karl: Pouvez-vous poster un peu plus de votre page maître? Principalement les bits d'où vous avez commencé, nous avons donc l'élément de tête complet visible ... – Chris

0

Très souvent, il s'agit d'un élément qui n'est pas correctement fermé. La plupart des navigateurs essaieront d'ajuster le balisage pour qu'il soit logique, mais dans la plupart des cas, le balisage sera incorrectement analysé.

Vous devriez probablement partager plus de votre page maître (et le formulaire Web qui l'utilise)!

0

Peut-être que votre balise HEAD n'a pas runat = "server"?