gpt4 book ai didi

c# - 在 Render() 方法期间错误地写入 writer 时出现困惑

转载 作者:可可西里 更新时间:2023-11-01 08:29:51 26 4
gpt4 key购买 nike

谁能解释一下这里发生了什么。

我有以下标记:

<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 标签的顶部被删除了——这是我用来“清理”html 的 HttpHandler 的错误(它将脚本移到底部等)。

这仍然不能准确解释为什么改变渲染方法的顺序会导致错误消失,但我确信这一切都有一个合乎逻辑的解释!

最佳答案

你只是简单地用你从你的函数返回的内容覆盖了你的 body 内容:

<script>this is my script</script>

关于c# - 在 Render() 方法期间错误地写入 writer 时出现困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6262202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com