2016-06-06 7 views
1

Der Link zu Prev und Next geht immer auf Seite 1. Aber alle anderen Seiten mit Nummer gehen auf die gewünschte Seite: Bitte helfen. Ich habe die @prev und @next hinzugefügt, so dass ich ihre Werte sehen kann und es zeigt, dass wenn ich auf Seite 5 bin, die vorherige 4 ist und die nächste 6 ist. Aber wenn ich auf die Prev und Next Taste klicke, lande ich immer auf Seite 1.Nächste und vorherige geht immer auf Seite 1

<ul class="pagination btn-lg"> 

@{ int currentPage = (int)ViewBag.CurrentPage;} 

@if (currentPage > 5) 
{ 
    int prev = (int)ViewBag.CurrentPage - 1; 
    @prev 
    <li><a [email protected]("Index", new { prev }) >Prev</a></li> 
} 

@{ int offset;   
    offset = currentPage - 4 <= 0 ? 1 : currentPage - 4; 
    int maxPages = offset + 9 > ViewBag.Pages ? (int)ViewBag.Pages : offset + 9; 
    } 
@for (int page = offset; page <= maxPages; page++) 
{   

    if (page == ViewBag.CurrentPage) 
    { 
     <li class="active"><a [email protected]("Index", new { page }) >@page</a></li> 
    } 
    else 
    { 
     <li><a [email protected]("Index", new { page })>@page</a></li> 
    } 
} 

@if (maxPages < ViewBag.Pages) 
{ 
    int next = currentPage + 1; 
    @next 
    <li><a [email protected]("Index", new { next })>Next @next</a></li> 
} 

public ActionResult Index(int? page) 
    { 
     Models.Items items = new Models.Items(); 
     items.loadItems(page.HasValue ? (int)page : 1); 
     ViewBag.Items = items.items; 
     ViewBag.Pages = (items.ItemCount/Models.Items.itemsPerPage) + 1; 
     ViewBag.CurrentPage = page.HasValue ? (int)page : 1; 
     return View(); 
    } 
+1

Was ist die Signatur der 'Index()' Methode. Nimmt man den 'Index (int page = 1)' an, dann sollten die Links 'new {page = prev}' und 'new {page = next}' sein (und die anderen sollten auch 'new {page = page}') sein –

+0

Das hat es getan. Ich wusste nicht, dass ich die Parameter so einstellen muss. Völlig neu. Kannst du es bitte als Antwort posten, damit ich es als solches markieren kann. Vielen Dank! –

+0

Ich werde, wenn Sie die Frage bearbeiten, um die Signatur der 'Index()' Methode zu zeigen :) –

Antwort

1

Ihre Nutzung von

<a [email protected]("Index", new { prev })>Prev</a> 

erzeugt href=".../Index?prev=2" (vorausgesetzt, der Wert von prev=2), so dass Sie einen Wert für prev Senden , Aber nicht ein für page (und Code seiner auf den Standardwert setzt - page = 1)

Ändern Sie die Links zu

<a href="@Url.Action("Index", new { page = prev }")>Prev</a> 

und dito für new { page = next } und (empfohlen) new { page = page }

Randbemerkung : Sie können auch verwenden

@Html.ActionLink("Prev", "Index", new { page = prev }) 
Verwandte Themen