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