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.
<head> <link href = "~/Content/PagedList.css" rel="stylesheet" /> </head>
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);
}
}
}
@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.