Потому что бывают случаи, когда вполне возможно иметь возможность явной записи в выходной поток.
аюсь обновитьэтот урок о внедрении BigPipe в Facebook для бритвы.
Существует вспомогательное расширение html, которое добавляет листлет в список, а затем выводит в ответ удерживающий элемент div. Идея состоит в том, что позже содержимое этого постлета будет преобразовано в строку, а затем введено в этот элемент div с помощью javascript.
public static void RegisterPagelet(this HtmlHelper helper, Pagelet pagelet) {
var context = helper.ViewContext.HttpContext;
List<Pagelet> pagelets = (List<Pagelet>)context.Items["Pagelets"];
if (pagelets == null) {
pagelets = new List<Pagelet>();
context.Items["Pagelets"] = pagelets;
}
pagelets.Add(pagelet);
context.Response.Write("<div id=\"" + pagelet.Container + "\"></div>");
}
В примере эта функция вызывается так:
<div id="textHolder">
<% Html.RegisterPagelet(myPagelet); %>
</div>
Который добавляет страницу в списки и выводит элемент div в поток ответов.
Так
<div id="textHolder">
<div id="pageletPlaceHolder"></div>
</div>
Тем не менее, когда я попробую то же самое в Razor:
<div id="textHolder">
@{ Html.RegisterPagelet(myPagelet); }
</div>
Заполнитель div появляется в верхней части тела, вне div textHolder. Почему это? Как я могу заставить это вести себя как представление webforms, где ответ выводится внутри div?
Благодарю.