Потому что бывают случаи, когда вполне возможно иметь возможность явной записи в выходной поток.

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

Благодарю.

Ответы на вопрос(4)

Ваш ответ на вопрос