获取和显示大量数据的最佳做法

时间:2020-02-20 06:59:13

标签: c# .net asp.net-mvc

正如标题所述,我正在实现一个网页,其中显示了许多带有.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来获取这些数据,而不是像我一样一次将所有内容加载到索引控制器中?

2 个答案:

答案 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()方法绑定图表。