C# ASP.NET MVC中使用Razor语法的分页

C# ASP.NET MVC中使用Razor语法的分页,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,我正在使用EF6开发ASP.NETMVC。如何在视图中添加带有模型项的分页,而无需从控制器调用任何函数 @model IEnumerable @foreach(模型中的var项目){ @DisplayFor(modelItem=>item.name) } LINQ提供了可用于实现分页的扩展:Skip和Take @model IEnumerable<myApp.Models.myTable> @{ int pageSize = 20; int pageIndex =

我正在使用EF6开发ASP.NETMVC。如何在视图中添加带有模型项的分页,而无需从控制器调用任何函数

@model IEnumerable
@foreach(模型中的var项目){
@DisplayFor(modelItem=>item.name)
}

LINQ提供了可用于实现分页的扩展:
Skip
Take

@model IEnumerable<myApp.Models.myTable>

@{
    int pageSize = 20;
    int pageIndex = ViewBag.PageIndex as int? ?? 0;
}

<tbody>
@foreach(var item in Model.Skip(pageSize * pageIndex).Take(pageSize))
{
    <tr>
        <td>@Html.DisplayFor(modelItem=> item.name)</td>
    </tr>
}
</tbody>
@model IEnumerable
@{
int pageSize=20;
int pageIndex=ViewBag.pageIndex为int???0;
}
@foreach(Model.Skip(pageSize*pageIndex.Take(pageSize))中的变量项)
{
@DisplayFor(modelItem=>item.name)
}

但我认为这应该在控制器中完成,而不是在视图中,因为数据应该已经从那里的数据库中查询出来,因此您需要查询每个页面上的所有数据。

由于新的MVC项目默认情况下通常包括jQuery,您可以使用jQuery Datatables。您需要向页面添加一些脚本,并确保可以引用表(通过添加id):


$(文档).ready(函数(){
$('#yourTableId').datatable();
};
这是最基本的要求。您可以很容易地在网上找到关于jQuery数据表的信息,以获得更深入的信息


如果您正在返回数千条记录,您可能需要考虑通过控制器进行寻呼,以避免在客户端上占用太多内存。

是的。控制器需要知道在后续请求中从客户端发送的PayEdk的值。这与EF6。I无关。如果您想让处理远离控制器,而不是在客户机上进行。如果您使用JQuery,Steve Harris有一个很好的选择,但还有其他选择。
<script>
    $(document).ready(function () {
        $('#yourTableId').datatable();
    };
</script>