Может кто-нибудь объяснить, что здесь происходит.
У меня есть следующая разметка:
<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>
Решение заключается в вызове writer.Write после base.Render, например:
base.Render(writer);
writer.Write("<script>this is my script</script>");
Почему?!
UPDATE
Я удивлен количеством интереса к этому вопросу!
Я выяснил, почему была удалена верхняя часть моего тега head - это была ошибка с HttpHandler, которую я использую для «очистки» html (он перемещает скрипты в нижнюю часть и т. Д.).
Это все еще не объясняет, почему изменение порядка метода рендеринга может привести к исчезновению ошибки, но я уверен, что есть логическое объяснение всему этому!