在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)
{
}
}
渲染大约400行的表格需要一点时间,但不到一秒钟,对于我的目的来说已经足够好了。