Как написать метод расширения для подкачки в MVC - PullRequest
5 голосов
/ 23 января 2012

Я определил статический класс для включения подкачки:

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);
   }
}

, и я хочу, чтобы в моем контроллере было сделано следующее:

var pagedDataCourses = products.OrderBy(p => p.productName).PageData(currentPage, pageSize);

, чтобы я мог поместить этот статический класс /метод, чтобы я мог получить метод расширения для подкачки во всех контроллерах.

Ответы [ 2 ]

3 голосов
/ 23 января 2012
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

0 голосов
/ 23 января 2012

Взгляните на пейджинговый контент MVC http://mvccontrib.codeplex.com/wikipage?title=Grid

...