正如标题所述,我正在实现一个网页,其中显示了许多带有.net的图表和表
(注意:我没有使用.net的经验,但是我确实有使用其他语言的经验。因此,对我来说实现实现并不难。问题是我想知道我在做什么吗? “正确”)
因此,此页面假定显示一堆具有不同数据集的图表和表格。目前,我正在用MVC来实现它,其中控制器一次获取所有数据,然后返回带有保存所有这些数据的对象的视图。
它是这样的:
型号:
public class AViewModel
{
Public List<ClassofData1> DataForTable1 { get; set; }
Public List<ClassofData2> DataForTable2 { get; set; }
Public List<ClassofData3> DataForChart1 { get; set; }
Public List<ClassofData4> DataForChart2 { get; set; }
... //repeat for dozen of time :)
}
控制器:
public class AController : Controller
{
public ActionResult Index()
{
AViewModel DataforView = mew AViewModel();
DataforView.DataForTable1 = Fetch1(); //im oversimplifying here, but it basically goes like this
DataforView.DataForTable2 = Fetch2();
DataforView.DataForChart1 = Fetch3();
DataforView.DataForChart2 = Fetch4();
... //repeat for another dozen of time :)
return View("Index", DataforView);
}
}
然后在HTML页面上显示所有内容。
可以那样实现吗?将所有这些数据加载到单个视图模型中,然后将其全部“转储”到HTML页面上。
还是我应该制作一堆HTML页面一一调用的API来获取这些数据,而不是像我一样一次将所有内容加载到索引控制器中?
答案 0 :(得分:0)
您需要烟熏味。这是一个示例https://blogs.taiga.nl/martijn/2008/08/27/paging-with-aspnet-mvc/
简而言之,您应该执行已排序的请求(默认情况下,以ID为例)。
您的操作应如下所示:
ActionResult Search(string query, int startIndex, int pageSize) {...}
您的回应应该像这样:
public interface IPagedList<T> : IList<T>
{
int PageCount { get; }
int TotalItemCount { get; }
int PageIndex { get; }
int PageNumber { get; }
int PageSize { get; }
bool HasPreviousPage { get; }
bool HasNextPage { get; }
bool IsFirstPage { get; }
bool IsLastPage { get; }
}
因此,通过PageNumber和PageSize,您可以计算元素的开始和结束索引。要选择这样,请使用
var page = source.Skip(startIndex).Take(pageSize);
答案 1 :(得分:0)
您正在使用哪个图表?我们可以使用JSON数组绑定它吗?如果可以使用JS绑定它,则应创建其他操作以获取图表数据。并在准备好文档时从javascript jQuery.ajax()方法绑定图表。