Я пытаюсь обновить это руководство по внедрению 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?
Спасибо.