在ie9中有相同的格式问题,在ie11中有一个新问题,它可以正确格式化,但是需要25-40秒来呈现大约400行和9列的表。它具有相同的原因,tr或td标签内的空格。
我正在显示一个表格,该表格是通过AJAX调用中的部分视图的渲染而创建的。我决定通过在此处发布的方法从呈现的部分视图中删除空格来在服务器上对其进行BFH处理:http : //optimizeasp.net/remove-whitespace-from-html
这是他的解决方案复制到:
private static readonly Regex RegexBetweenTags = new Regex(@">(?! )\s+", RegexOptions.Compiled);
private static readonly Regex RegexLineBreaks = new Regex(@"([\n\s])+?(?<= {2,})<", RegexOptions.Compiled);
private static string RemoveWhitespaceFromHtml(string html)
{
html = RegexBetweenTags.Replace(html, ">");
html = RegexLineBreaks.Replace(html, "<");
return html.Trim();
}
这是一种方法,它以字符串形式返回部分视图,该视图是从另一个SO答案中窃取的:
public string RenderPartialViewToString(string viewName, object model)
{
this.ViewData.Model = model;
try
{
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, viewName);
ViewContext viewContext = new ViewContext(this.ControllerContext, viewResult.View, this.ViewData, this.TempData, sw);
viewResult.View.Render(viewContext, sw);
return RemoveWhitespaceFromHtml(sw.ToString());
}
}
catch (Exception ex)
{
//logger here
}
}
渲染大约400行的表需要一点时间,但是不到一秒钟,对于我来说这已经足够了。