2010-07-21 63 views
0

当我在ASP.NET呈现页面时,会发生以下情况为什么元件刷新标签和标题标签位于ASP.NET的<head>标签之外?

</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> 

那么,我问的是,这里到底有此刷新元标签来自哪里,为什么它把它放在我的头部标签和身体标签之间,为什么我的页面标题跳出头部?

当查看页面的萤火虫产生源,它显示的标题标签和head标签内的这一新meta标签,但在任何浏览器中查看源,它看起来像上面。使用wget刮取页面时,它也会出现错误,如上所示。

任何想法,为什么浏览器可能会以不同的方式来解释这一点,更重要的是,其中新meta标签已经从何而来?

谢谢!卡尔。

编辑:

嗨!

感谢您的答复家伙,非常丰富!

我发现,问题是这行代码:

Page.Header.Controls.Add(ctrl); 

把神秘的元标记使用这条线把它的头标记之外。当评论这件事时,标题标签会回落到正确的位置,一切都很好!

还有什么想法?

谢谢!

卡尔。

+0

你能告诉我们更多的代码吗 – 2010-07-21 09:23:21

+0

你可以使用'Fiddler'来检查服务器真正发送的内容 - 在代码被客户端浏览器处理之前。 http://www.fiddler2.com/ – 2010-07-21 09:33:36

回答

0

为什么浏览器会解释它的不同的事情有两个答案。首先,你所说的萤火虫输出是生成源。这意味着它已经经过了一定的处理,显然firefox正在做一些魔法来说:“它是一个元标题和一个标题标签,它们应该在标题中,以便我将它们放在那里。”

您比较它们的原始来源的其他浏览器,它听起来就像是在浏览器试图理解它之前。如果你在firefox中查看原始源代码(ctrl-u),我怀疑你会得到同样的结果。

我会期待所有的浏览器做同样的事情,你所描述Firefox作为做什么,但如果没有的话,这不是真的somethign被关注。当收到这样的无效HTML时,浏览器没有真正的规则来做什么。这意味着浏览器可以做任何他们想要的,试图猜测你的意思是完全忽略它。

至于是什么导致它,epslanguage查询参数来自episerver - 我不知道这是否在请求url中,所以它可能只是被持续存在,或者它可能是epowerver试图用一种明确的语言重定向到一个页面,而不是仅仅假设默认的。不幸的是我对episerver不熟悉,所以我不能说更具体的。

当然肯定是在你的服务器端有东西导致这种情况发生。

您是否对所有页面感兴趣或仅仅是某一特定情况?

+0

感谢您的回复家伙!我已经编辑了我的问题,提供了更多关于我发现的信息! – Karl 2010-07-21 15:43:49

+0

@Karl:你可以发布多一点你的母版页吗?主要是从你开始的位置开始,因此我们有完整的头部元素可见... – Chris 2010-07-21 16:11:40

0

很多时候,这是一个元素没有正确关闭的情况。大多数浏览器都会尝试调整标记以使其有意义,但在大多数情况下,标记将被错误地解析。

你应该多分享一下你的母版页(以及使用它的网页表单)!

0

也许你的HEAD标签没有runat =“server”?