Asp.Net Mvc Sayfalama Yapımı

İbrahim     10 Aralık 2018     389     4    

Sayfalama Neden Yapılır?

Bir bloğumuz olduğunu ve anasayfada makalelerimizi göstermek istediğimizi varsayalım.İki yüz adet makale olduğunu düşünelim.Bu makalelerin hepsini çekip anasayfada göstermek istersek, bloğumuzun yüklenme hızında ister istemez düşüş yaşanır, çünkü veritabanına aşırı yüklenmiş oluruz.Bunun yerine sayfalamayı kullanıp, belli bir miktar veri çeksek daha iyi olmaz mı?

Asp.Net Mvc'de PageList İle Sayfalama Nasıl Yapılır?

Öncelikle şunu belirtmeliyim ki, pagelist kullandığımızda tüm verileri çektikten sonra sayfalama işlemi yapmamaktadır.Sizin belirlediğiniz adet kadar veri çekmektedir.(Örneğin yedi adet veri çekilmesi isteniyorsa, veritabanından yedi veri çekmektedir.)

Kullanımı

İlk olarak pagelist paketini yükleyeceğiz.

Aspnet mvc ile sayfalama yapımı

Manage Nuget Packages for Solution açıyoruz.PageList yazıp aratıyoruz, bulduktan sonra seçip install diyerek projeye dahil ediyoruz ve referans bölümüne "PagedList.Mvc" ile "PagedList" olmak üzere iki dll eklenmiş oluyor.Content klasörüne de "PagedList.css" adlı stil dosyamız ekleniyor.
Stil dosyamızı sayfalamanın yapılacak olduğu sayfanın head etiketi arasına ekliyoruz.

<head>
    <link href="~/Content/PagedList.css" rel="stylesheet" />
</head>

Ardından projemizde verileri gösterecek olduğumuz sayfanın action'ınına gidelim kodlarımızı yazalım.

using PagedList;

namespace Deneme.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index(int? SayfaNo)
        {
            int _sayfaNo = SayfaNo ?? 1;
            var model = context.Makale.ToPagedList<Makale>(_sayfaNo, 8);
            return View(model);
        }
    }
}

Sayfaya “PagedList” dll'ini ekledikten sonra ToPagedList Extension metodunu kullanabiliyoruz.Bu metod IQueryable tipler üzerine Extension olarak inşaa edilmiş ve geriye IPagedList tipinden değer dönmektedir.(ToPagedList methodunun ikinci parametresine kaç veri çekilmesini istiyorsanız onu yazıyoruz, ben her sayfada sekiz veri çekilmesini istediğim için sekiz yazdım.)

Controller'ımızda gereken kodlarımızı göre artık view'imize geçelim.

@using PagedList
@using PagedList.Mvc
@using Deneme.Model
@model IPagedList<Makale>

<table>
    @foreach (var makale in Model)
    {
        <tr>
            <td>@makale.Ad</td>
            <td>@makale.Ozet</td>
            <td>@makale.Goruntulenme</td>
        </tr>
    }
<table>
@Html.PagedListPager(Model, _sayfaNo => Url.Action("Index", "Home", new { SayfaNo = _sayfaNo }))

Burada yine PageList, PageList.Mvc 'yi view'e dahil ettik.@Using Deneme.Model'i ekleyerek, Makale sınıfımızın yolunu verdik.Ardından modelimizin IPagedList türünde olduğunu söyledik ve foreach ile dönüp verileri ekrana yazdırdık.

“PagedList” ve “PagedList.Mvc” dll’leri sayesinde sayfamızda kullanabildiğimiz PagedListPager metodu bize sayfaya gelen ve içinde dönülen modele bağlı bir sayfalama oluşturulmaktadır.Metodun birinci parametresinde sayfalama yapılacak koleksiyonu isterken, ikinci parametresinde bir func tipinde bir metod talep etmektedir."_sayfaNo" parametresi ise o anki sayfayı temsil etmektedir.Burada eğer ikinci sayfaya tıklarsak _sayfaNo, iki değerini almaktadır ve home controller'ındaki index methoduna giderek. ilk sekiz veriden sonraki sekiz veriyi çekmesini sağlıyor.

Projeyi çalıştırdığımızda şu şekilde bir görünüm alırız.(İsterseniz stil dosyasından sayfa numaralarını yada arkaplan renklerinide değiştirebilirsiniz.)

Aspnet mvc ile sayfalama yapımıPagelist kullanımı bu şekilde arkadaşlar, umarım anlatabilmişimdir.

Hepinize iyi kodlamalar!


Etiketler:  
mvc
sayfalama-yapimi
paging
pagelist


Paylaş:  

Bir Cevap Yazın

V

Veli Sönmez 13 Aralık 2018
Paylaşım için teşekkürler.

İbrahim Çakal 15 Aralık 2018
Rica ederim.

K

Kerim Sarı 21 Ocak 2019
Açıklayıcı olmuş elinize sağlık hocam.

İbrahim Çakal 21 Ocak 2019
Teşekkürler Kerim.