0

当我在 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 中查看页面生成的源代码时,它会在 head 标记中显示标题标签和这个新的元标签,但在任何浏览器中查看源代码时,它看起来像上面那样。使用 wget 抓取页面时,也出现如上所示的错误。

任何想法为什么浏览器可能会以不同的方式解释这一点,更重要的是这个新的元标记来自哪里?

谢谢!卡尔。

编辑:

你好!

谢谢大家的回复,信息量很大!

我发现问题出在这行代码上:

Page.Header.Controls.Add(ctrl);

使用这一行将神秘的元标记放在头部标记之外。将其注释掉时,标题标签会回到正确的位置,一切都很好!

还有什么想法吗?

谢谢!

卡尔。

4

3 回答 3

0

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

您可能应该分享更多您的母版页(以及使用它的 Web 表单)!

于 2010-07-21T10:39:49.927 回答
0

也许您的 HEAD-tag 没有 runat="server"?

于 2010-07-21T15:49:10.943 回答
0

关于为什么浏览器会以不同方式解释它的问题,有两个答案。首先,您所说的萤火虫输出是生成源。这意味着它已经经过了一定程度的处理,并且很明显 Firefox 正在做一些魔术来说“嗯,它是一个元和一个标题标签,它们应该在标题中,所以我会把它们放在那里。”

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

我本来希望所有浏览器都能像你描述的 Firefox 那样做同样的事情,但如果不是,那么这并不是真正值得关注的事情。当接收到这样的无效 HTML 时,浏览器没有真正的规则来做什么。这意味着欢迎浏览器做他们想做的任何事情,从试图猜测你的意思到完全忽略它。

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

当然,肯定是您的服务器端有某些东西导致这种情况发生。

您是出于兴趣而对所有页面进行此操作,还是仅对一个特定页面或仅在一种特定情况下进行此操作?

于 2010-07-21T09:31:50.997 回答