是否可以使用MVCContrib网格而不暴露IQueryable服务?

时间:2012-11-15 23:45:37

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

我不希望有一个返回IQueryable的方法,但我也希望我的分页查询在数据库而不是内存中执行。 这个article讨论了如何通过IQueryable只公开一部分数据。

我修改了文章中描述的GetRange方法,如下所示。

    public IEnumerable<T> GetRange<TKey>(int page, int pageSize, Expression<Func<T, TKey>> keySelector, bool ascending )
    {

        IOrderedQueryable<T> sourceOrdered = null;
        sourceOrdered = ascending ? source.OrderBy(keySelector) : source.OrderByDescending(keySelector);

        return sourceOrdered.Skip((page - 1) * pageSize).Take(pageSize);

    }

如下所示传递给它的IPagination。

  var productPagedList = productList.GetRange(page ?? 1, 10, p => p.SupplierID, false)
            .AsPagination(page ?? 1, 10);

但网格需要知道总记录数才能正确呈现寻呼机。 有没有办法让MVCContrib网格与服务层暴露的IQueryable子集一起使用?或者以某种方式将总记录数量提供给它?还是其他任何提示?

谢谢

0 个答案:

没有答案