在我的 ASP.Net MVC 4 应用程序中,有几个地方我们要么手动将视图渲染为字符串,要么拦截渲染管道的某些部分。例如:
public static string RenderPartialViewToString(Controller controller, string viewName, object model)
{
controller.ViewData.Model = model;
try
{
using (System.IO.StringWriter sw = new System.IO.StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(controller.ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
catch (Exception ex)
{
return ex.ToString();
}
}
然而,截至今天,在使用 .Net 4.5.1 安装 Visual Studio 2013 预览版后,我们注意到返回给这些函数的 HTML 包含一大堆垃圾/调试标签。例如:
<$A$> <$B$><$C$> <$D$> class="dashboard-content jobs-view active-jobs-view"
<$E$> data-activity-type="<$F$>Active<$G$>"<$H$>> <$I$> <$J$><$K$><$L$>
class="content-header" <$M$>> <$N$> <$O$><$P$> <$Q$> class="event-carousel-content"
<$R$>> <$S$> <$T$><$U$> <$V$> class="navbar candidate-summary-toolbar"<$W$>>
<$X$> class="navbar-inner"<$Y$>> <$Z$> class="nav-collapse collapse"<$a$>>
他们出现的地方似乎没有任何押韵或理由,除了标签的字母每次增加一个。但是,这些标签在正常的页面生命周期中似乎并没有出现在响应流中——只有当我们手动渲染它们或以某种方式拦截管道时。
有谁知道这些标签是什么,它们来自哪里以及如何摆脱它们?
谢谢!