Özellikle asp.net mvc üzerinde sayfalama uygulamalarını kontrol ettim ve gerçekten uygulamalarda daha az verimli bir şey olduğunu hissediyorum.
Her şeyden önce, aşağıdaki gibi sayfalandırma değerlerini kullanır.
public ActionResult MostPopulars(int pageIndex,int pageSize)
{
}
Yanlış hissediyorum şey pageIndex ve pageSize tamamen Pagination sınıfının üyesi olmalıdır aksi takdirde bu şekilde çok fonksiyonel bir şekilde görünüyor. Ayrıca uygulama katmanlarında gereksiz parametre geçişini kolaylaştırır.
İkinci şey, aşağıdaki arayüzü kullanmalarıdır.
public interface IPagedList<T> : IList<T>
{
int PageCount { get; }
int TotalItemCount { get; }
int PageIndex { get; }
int PageNumber { get; }
int PageSize { get; }
bool HasPreviousPage { get; }
bool HasNextPage { get; }
bool IsFirstPage { get; }
bool IsLastPage { get; }
}
Benim sayfalandırma farklı eylem yönlendirmek istiyorsanız, bu yüzden içinde kapsül adı ve hatta denetleyici adı için yeni görünüm modeli oluşturmak zorunda. Başka bir çözüm daha sonra görüntülemek için parametre olarak çağrı cihazı yönteminde kodlanmış eylem ve denetleyici sabit belirtmek için bu arabirim modeli gönderme olabilir ama kesinlikle sadece bir eyleme bağlıdır çünkü benim görüş tamamen yeniden kullanılabilirliğini kaybediyor olabilir.
Başka bir şey, aşağıdaki kod görünümünde kullandıkları
Html.Pager(Model.PageSize, Model.PageNumber, Model.TotalItemCount)
Model IPagedList ise neden böyle bir aşırı yük yöntemi sağlamazlar @Html.Pager(Model)
veya daha iyi bir yöntemdir @Html.Pager()
. Model tipini bu şekilde bildiğimizi biliyorsunuz. Önce Model.PageNumber yerine Model.PageIndex kullanıyordum çünkü hata yapıyordu.
Bir başka büyük sorun da, IQueryable arayüzüne güçlü bir şekilde güvenmeleri. Veri katmanımda IQueryable kullandığımı nereden biliyorlar? Ben sadece sayfalama uygulama kalıcılığını cahil tutmak koleksiyonları ile çalışmak beklenebilir.
Sayfalandırma uygulamaları hakkındaki iyileştirme fikirlerimin yanlış olan tarafı nedir? Sayfalarını bu şekilde uygulamamalarının nedeni nedir?