我想更新this tutorial实施Facebook BigPipe剃须刀。ASP.Net MVC 3 Razor Response.Write position
有一个html助手扩展,它将一个pagelet添加到列表中,然后输出一个持有div给响应。这个想法是,稍后将这个pagelet的内容呈现为一个字符串,然后通过javascript注入到这个控股div中。
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>
然而,当我尝试同样的剃刀:
<div id="textHolder">
@{ Html.RegisterPagelet(myPagelet); }
</div>
在div占位符出现在机身的顶部,textHolder DIV之外。为什么是这样?我怎么能得到这个行为像webforms视图中的div内输出响应?
谢谢。
太棒了!这工作。谢谢。 – Terry 2011-04-10 15:47:37
谢谢,你整理了一下头部有点划伤:) – MemeDeveloper 2011-10-01 23:04:47
特里你试过@ Html.Raw吗? – 2012-09-12 20:18:25