asp.net-mvc - 如何在mvc中编写分页的扩展方法

标签 asp.net-mvc asp.net-mvc-3 razor pagination extension-methods

我已经定义了静态类来启用分页:

public static class Pager
{
   public static IEnumerable<T> PageData<T>(this IEnumerable<T> source, int currentPage, int pageSize)
   {
       var sourceCopy = source.ToList();

       if (sourceCopy.Count() < pageSize)
       {
            return sourceCopy;
       }

       return sourceCopy.Skip((currentPage - 1) * pageSize).Take(pageSize);
   }
}

我希望在我的 Controller 中执行以下操作:
var pagedDataCourses = products.OrderBy(p => p.productName).PageData(currentPage, pageSize);

所以我可以把那个静态类/方法放在哪里,这样我就可以在所有 Controller 中获得用于分页的扩展方法。

最佳答案

public static IQueryable<T> Page<T>(this IQueryable<T> query, int page, int pageSize)
{
   int skip = Math.Max(pageSize * (page - 1), 0);
   return query.Skip(skip).Take(pageSize);
}

您必须将它放在与使用扩展名相同的命名空间中。或者我们在 .cs 文件顶部的“使用”

关于asp.net-mvc - 如何在mvc中编写分页的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8970467/

相关文章:

asp.net - Cloud Optimized ASP.Net vNext 和普通版有什么区别?

asp.net-mvc-3 - MVC3 WebGrid - 动态创建列(foreach?)

asp.net - 寻找 RESTful API 的身份验证/模拟策略

jquery - 如何构建 Web 应用程序以使 AJAX 和 DHTML 更容易?

html - 使用 Razor 语法通过 Id 获取元素

razor - 确保将所有* .cshtml文件设置为 “Content”进行构建操作

asp.net-mvc - 根据 Html.TextBoxFor 的条件设置禁用属性

asp.net-mvc - 仅对登录用户显示菜单项

c# - 类型 'Api.Controllers.' 没有默认构造函数

c# - AD Distribution Group可以用来授权用户吗?