【发布时间】:2011-09-09 20:53:58
【问题描述】:
谁能解释一下这里发生了什么。
我有以下标记:
<html>
<head runat="server">
<title>My title</title>
<my:MyControl runat="server" ID="myControl" />
</head>
...
我的自定义控件是这样的:
public MyControl : Control
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<script>this is my script</script>");
base.Render(writer);
}
}
页面渲染的时候,整个头的上半部分都被砍掉了,所以html渲染成这样:
<html>
<script>this is my script</script>
</head>
解决办法是在base.Render之后调用writer.Write,像这样:
base.Render(writer);
writer.Write("<script>this is my script</script>");
为什么?!
更新
我对这个问题的关注程度感到惊讶!
我发现为什么我的 head 标签的顶部被删除了 - 这是一个 HttpHandler 的错误,我用它来“清理”html(它将脚本移动到底部等)。
这仍然不能准确解释为什么更改渲染方法的顺序会导致错误消失,但我相信这一切都有一个合乎逻辑的解释!
【问题讨论】:
-
有趣。他们通常会提到这些东西......
-
这对我来说是正确的。 (而且我看不出它不应该这样做的原因。)
-
@Mormegil 有趣...一定是我的代码库中的其他东西在干扰它。