首页 > 解决方案 > Razor 表加载速度极慢

问题描述

我正在用大量数据填充剃刀表,但加载时间超过 10 分钟。

在我看来,我使用了很多逻辑,我知道这不是最好的方法,但这就是我想出的,因为我是剃须刀的新手。

名称包含大约 800 个项目,联系人 700,网址 3600,服务器 1200

我不认为这很多,但我制作表格的方式是我假设阻止应用程序,因为我在其他列表中多次遍历这些列表。

我已将 DataTables 应用于此表,我认为这会有所帮助,因为限制屏幕上显示的行应该意味着不会遍历整个列表?除非数据表仍然加载整个表并只显示 25。有没有办法最初只加载 100 个结果,然后随着时间的推移慢慢加载其余的结果?

创建此表时阻止我的应用程序挂起的最佳方法是什么

<table class="table table-responsive" id="result" data-page-length='25'>
        <thead>
            <tr>
                <th>Application</th>
                <th>Ministry</th>
                <th>Contacts</th>
                <th>Server</th>
                <th>URL</th>
            </tr>
        </thead>

        <tbody>
            @foreach(var l in Model.names)
            {
                <tr>
                    <td style="width: 27%">
                        @Html.DisplayFor(modelItem => l.appName)
                    </td>

                    <td style="width:20%">
                        @Html.DisplayFor(modelItem => l.ministry)
                    </td>

                    <td style="width:20%">
                        @foreach (var k in Model.contacts)
                        {
                            if(k.appName == l.appName){@Html.Raw(k.contactName + " - " + k.contactRole + "<br>")}                    
                        }
                    </td>

                    <td colspan="2">
                        <table>
                            @foreach(var s in Model.servers)
                            {
                            <tr >
                                @if(s.appName == l.appName)
                                {
                                    <td>
                                        <p class="big">
                                            @Html.Raw(s.server)
                                        </p>
                                    </td> 
                                }


                                <td>
                                    @foreach(var u in Model.filteredURls)
                                    {
                                        @if(u.appName == l.appName && u.server == s.server){@Html.Raw(u.url + "<br>")} 
                                    }
                                </td>

                            </tr>  
                            }

                        </table>
                    </td>  
                </tr>
            }
        </tbody>
    </table>
</div>

<script type="text/javascript" >
    jQuery(document).ready(function () {
        jQuery('#result').DataTable();
    });
</script>

标签: c#jqueryrazormvvm

解决方案


推荐阅读