我正在开发一个产品,用户到目前为止一直在使用Excel,他们希望我的MVC应用程序与此类似。 他们喜欢看年假的视觉效果,所以我开发了一个可滚动的桌子,看起来像这样;
该表格大约有300个单元格,我可能有15个人来显示这些信息,因此您可以看到这可能会变得非常大。 在我构建控件之前,我曾向他们提到会出现性能问题。但现在他们喜欢这个产品,并希望它能更快地加载。 如果我编写的代码可以重构,我不会感到惊讶。毫无疑问,它可以写得更好,也许性能也可以提高,所以我会告诉你。 但是我怀疑真正的问题是HTML太多了。我还有什么其他选择?我还不熟悉Silverlight或HTML5,虽然如果有人可以为我提供一些很好的链接,我很乐意调查它。 我的网页上有这个标记;
<% if (Model.cvm != null && Model.cvm.Lines != null && Model.cvm.Lines.Count > 0)
{ %>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<table cellpadding="0" cellspacing="0" id="TeamNames"><!-- Table to display names of team members -->
<tr>
<td style="height:65px"></td>
</tr>
<% foreach (SHP.Models.CalendarViewModel.CalendarLine cl in Model.cvm.Lines)
{%>
<tr>
<td align="right"><%: cl.Name%></td>
</tr>
<%} %>
</table>
</td>
<td>
<div id="pageWidthCalendar"><!-- Table to display a scrollable grid of the annual leave calendar -->
<table id="ScheduledLeaveCalendar">
<%: Html.DisplayFor(x => x.cvm.Header1)%>
<%: Html.DisplayFor(x => x.cvm.Header2)%>
<%: Html.DisplayFor(x => x.cvm.Header3)%>
<%: Html.DisplayFor(x => x.cvm.Lines)%>
</table>
</div><!-- pageWidthCalendar - puts scrollbars on the calendar control -->
</td>
</tr>
</table>
我的日历行显示模板具有此标记;
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SHP.Models.CalendarViewModel+CalendarLine>" %>
<%@ Import Namespace="SHP.WebUI.HtmlHelpers" %>
<%@ Import Namespace="SHP.Models" %>
<tr>
<% foreach (var item in Model.HtmlCellCollection) { %>
<%: Html.CalendarCellClass(item)%>
<% } %>
</tr>
其他显示模板类似。
我的CalendarCellClass辅助方法看起来像;
public static MvcHtmlString CalendarCellClass(this HtmlHelper helper, CalendarViewModel.CalendarCell _cell)
{
TagBuilder td_Outer = new TagBuilder("td");
if (_cell.MorningOnlyFlag == true || _cell.AfternoonOnlyFlag == true)
{
td_Outer.InnerHtml = GetHalfDayTable(_cell);
}
else
td_Outer.MergeAttribute("class", _cell.HtmlCellClass);
return MvcHtmlString.Create(td_Outer.ToString());
}
答案 0 :(得分:2)
示例:
您可以在http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
的scottgu博客中阅读更多内容答案 1 :(得分:1)
正如其他人所说,分析会很有用。
根据Internet Explorers的F12开发人员工具或Firebug,YSlow,PageSpeed或某些此类工具的请求时间图将非常有用。
另外,Timings服务器端实际创建视图会有所帮助。它也可能是在客户端呈现问题的一种情况。
请记住,在互联网应用程序中,在这方面,感知通常与“真正的性能”一样重要,AJAX-ifying可以通过加载页面的其余部分来改善他们的感知 日历本身。您可以通过仅传输JSON来加速下载和服务器端,并使用jquery在客户端上构建UI。但是,如果客户端渲染是主要问题所在,那将无济于事。