ASP.NET MVC ile Sayfalama(Pagination) Yapımı

ASP.NET MVC ile Sayfalama, ASP.NET’de grid bileşenlerini kullandığımızda otomatik olarak karşımıza çıkan paggination yani sayfalamanın ASP.NET MVC’de nasıl yapıldığı ile ilgili bilgiye makalenin devamında ulaşabilirsiniz.

ASP.NET MVC ile Sayfalama(Pagination) Yapımı

ASP.NET MVC ile Sayfalama(Pagination) Yapımı

Öncelikle sayfalama yapabilmek için ihtiyacımız olan kütüphaneleri projemize referans olarak eklemek için visual studio menüsünde Tools > Nuget package manager > Manage NuGet Packages For Solution...‘a tıklayın ardından arama kısmına PagedList.Mvc yazın ve install diyerek yükleyin yada Package Manager Console‘dan aşağıdaki kodu yazarak otomatik yüklenmesinide sağlayabilirsiniz.

Sayfalama için kod tarafının ayarlanması

Sayfalamaya örnek verecek olursak aşağıdaki gibi Index metodumuzda Users tablosundaki tüm kayıtları getirip ToPagedList() metodu ilede sayfalamayı kod tarafında ayarlamış oluyoruz ToPagedList() metodunun ilk parametresine gösterilecek sayfa numarasını ikinci parametresine ise sayfa başına gösterilecek kayıt sayısınısı belirtiyoruz.

HomeController.cs

Sayfalama için view tarafının ayarlanması

View tarafında PagedList kütüphanesinin metodlarını kullanabilmek için sayfa başına aşağıdaki tanımlamaları yapmalısınız.

Ardından sayfalama için kullanacağınız PagedListPager adlı HtmlHelper’ini aşağıdaki gibi tanımlayınız.

Burada page ile tanımladığımız nesne sayfa numarasını taşımaktadır ve querystringde sayfa numarasını taşıyacak değerin adınıda ifade etmektedir sayfalamada oluşturulan linklere tıkladığımızda Index metoduna değer gönderilecek ve ilgili sayfaya ait kayıtlar getirilecektir.

Son olarak projemize ait örnek görüntüye gözatabilirsiniz.

ASP.NET MVC ile Sayfalama(Pagination) Yapımı

PagedListPage adlı html helper’inın 3.parametresine PagedListRenderOptions sınıfı ile bazı ayarları kendimize göre özelleştirebiliyoruz şimdi bu ayarlara ilişkin tablomuza aşağıdan gözatalım.

PagedListRenderOptions Ayarları

BaşlıkAçıklama
DisplayLinkToLastPageSon sayfaya ait link
DisplayLinkToFirstPageİlk sayfaya ait link
DisplayLinkToNextPageSonraki sayfaya ait link
DisplayPageCountAndCurrentLocationSayfa sayısı ve şuanki sayfa

Daha detaylı bilgiye ulaşabilmek için eklentinin GitHub sayfasını ziyaret edebilirsiniz.

PagedList GitHub Sayfası: https://github.com/troygoode/PagedList

Bunlar da hoşunuza gidebilir...

6 Cevaplar

  1. madlove08 dedi ki:

    merhabalar, pagedlist ile ben de sayfalama yapmaya çalışıyorum fakat beceremedim yardımcı olabilir misiniz?

    benim problemim şu makaleler sayfam makalehelper isminde bir model aracılığı ile listeleme yapıyor, burada pagedlistpager ile sayfalamayı yaptırmaya çalıştığım an da modeller çakışıyor ve hata alıyorum. bunu nasıl aşabilirim?

    public ActionResult Makaleler(string id, int page = 1)
    {

    var sorgu = (from k in veritabani.Kategoris
    join m in veritabani.Makales on k.KategoriID equals m.KategoriID
    where k.UrlSefKatAdi == id
    orderby Guid.NewGuid() descending
    select new
    {
    m.MakaleBaslik,
    m.MakaleResim,
    k.KategoriAdi,
    m.MakaleKisaAciklama,
    m.MakaleId,
    k.KategoriID,
    m.MakaleTarih,
    m.UrlSefMakaleAdi
    }).ToList().Skip(recordsPerPage).Take(6);

    List makale = new List();

    foreach (var item in sorgu)
    {

    MakaleHepler help = new MakaleHepler();
    help.KategoriAdi = item.KategoriAdi;
    help.MakaleBaslik = item.MakaleBaslik;
    help.MakaleResim = item.MakaleResim;
    help.MakaleKisaAciklama = item.MakaleKisaAciklama;
    help.MakaleId = item.MakaleId;
    help.MakaleTarih = item.MakaleTarih;
    help.UrlSefMakaleAdi = item.UrlSefMakaleAdi;

    makale.Add(help);
    ViewBag.kategoriAdi = item.KategoriAdi;

    }
    return View(makale);

    }

    • Murat ÖNER dedi ki:

      Merhaba model çakışması normal çünkü geri IPagedList türünde olmayan bir liste dönderiyorsunuz yapmanız gereken .Skip(recordsPerPage).Take(6); kısmını silmek ve return View(makale) demiş olduğunuz yerde return View(makale..ToPagedList(page)) şeklinde bir düzenleme yapmalısınız bu arada sayfa başına kaç kayıt gösterileceği gibi ayarlar zaten PagedList eklentisinin özelliklerinde var gözatmanızı öneriririm eğer bulamaz iseniz bu konuda yardımcı olmaya çalışırım ama yapmanız gereken şimdilik bu.

  2. madlove08 dedi ki:

    Eyvallah çok makbule geçti 🙂 Teşşekür ediyorum.

  3. Hakan dedi ki:

    Hocam   => nereden geliyor acaba öğrenebilir miyim

Bir Cevap Yazın