Was ist die am meisten bevorzugte und einfachste Methode zur Paginierung in ASP.NET MVC? Das heißt, was ist der einfachste Weg, eine Liste in mehrere durchsuchbare Seiten aufzuteilen.
Nehmen wir als Beispiel an, ich erhalte eine Liste von Elementen aus einer Datenbank / einem Gateway / einem Repository wie folgt:
public ActionResult ListMyItems()
{
List<Item> list = ItemDB.GetListOfItems();
ViewData["ItemList"] = list;
return View();
}
Der Einfachheit halber möchte ich nur eine Seitenzahl für meine Aktion als Parameter angeben. So was:
public ActionResult ListMyItems(int page)
{
//...
}
quelle
ActionLink
gibt mir Ihre Syntax beim Anfordern der Seite einen Kompilierungsfehler. CS0103: Der Name 'startIndex' existiert im aktuellen Kontext nicht. Ist diese Technik mit MVC2 nicht möglich?startIndex
und fügstpageSize
ihn hinzu. Ich hatte gehofft, dass es automatisch die Werte des letzten Aufrufs von verwenden würdeSearch
. Wie würde ich dasstartIndex
vom letztenSearch
in meinem verwendenActionLink
?Ich hatte das gleiche Problem und fand eine sehr elegante Lösung für eine Pager-Klasse aus
http://blogs.taiga.nl/martijn/2008/08/27/paging-with-aspnet-mvc/
In Ihrem Controller sieht der Anruf folgendermaßen aus:
und aus Ihrer Sicht:
quelle
Ich wollte einen einfachen Weg, dies zu tun, auch mit dem Frontend behandeln:
Regler:
Aussicht:
quelle
var data = this.dataSource.Skip(page * PageSize).Take(PageSize).ToList();
Benötigt ein,orderBy(o => o.Id)
bevor Sieskip()
|| verwenden können Abgesehen davon ist dies eine großartige Antwort, die viel mehr Gegenstimmen verdient.Hier ist ein Link , der mir dabei geholfen hat.
Es verwendet das PagedList.MVC NuGet-Paket. Ich werde versuchen, die Schritte zusammenzufassen
Installieren Sie das PagedList.MVC NuGet-Paket
Projekt erstellen
In
using PagedList;
an die SteuerungÄndern Sie Ihre Aktion, um die Seite festzulegen
public ActionResult ListMyItems(int? page) { List list = ItemDB.GetListOfItems(); int pageSize = 3; int pageNumber = (page ?? 1); return View(list.ToPagedList(pageNumber, pageSize)); }
Fügen Sie am unteren Rand Ihrer Ansicht Paging-Links hinzu
@*Your existing view*@ Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount @Html.PagedListPager(Model, page => Url.Action("Index", new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
quelle
Regler
Geschäftslogik
Ansicht zur Anzeige der Gesamtseitenzahl
quelle
Ich denke, der einfachste Weg, eine Paginierung in einer ASP.NET MVC-Anwendung zu erstellen, ist die Verwendung der PagedList-Bibliothek.
Das folgende Github-Repository enthält ein vollständiges Beispiel. Hoffe es würde helfen.
Demo Link: http://ajaxpagination.azurewebsites.net/
Quellcode: https://github.com/ungleng/SimpleAjaxPagedListAndSearchMVC5
quelle
Entität
HTML
Paging-Logik
Controller verwenden
quelle
quelle