"Enter"a basıp içeriğe geçin

Asp.Net Mvc Sayfalama Yapımı

Aspnet mvc ile sayfalama işlemi nasıl yapılır bu makalede bu konuya değiniyor olacağız.

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.

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.
namespace Deneme.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index(int? SayfaNo)
        {
            int _sayfaNo = SayfaNo ?? 1;
            var model = context.Makale.ToPagedList(_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

@foreach (var makale in Model)
{
    @makale.Ad @makale.Ozet @makale.Goruntulenme
}

@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. İlk 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. Pagelist kullanımı bu şekilde arkadaşlar, umarım anlatabilmişimdir.
Hepinize iyi kodlamalar!
Yazıyı Paylaşmak İster misin?
Share on Facebook
Facebook
Pin on Pinterest
Pinterest
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Share on Tumblr
Tumblr
Share on Reddit
Reddit
    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir