2016-07-21 5 views
-1

Ich habe ein Problem in meinem asp.net-Projekt. Ich möchte meinen Tisch paginieren, aber ich kann meine Website nicht starten.IPagedList // IEnumerable Problem

das ist das Problem:

  • I Entitätsmodell in ‚Kontext‘ Ordner mit Getter und Setter meiner Tabelle
  • Dann erzeugt i die Steuerung mit vs
  • erstellt ändern I-Regler mit diesem

    Code
    public ActionResult Index(int? page) 
        { 
    
        var firmas = from f in db.Firmas select f; 
        if (Request.HttpMethod != "GET") 
        { 
         page = 1; 
        } 
        int pageSize = 2; 
        int pageNumber = (page ?? 1); 
    
        return View(firmas.ToPagedList(pageSize, pageNumber)); 
        } 
    

Und ich habe dies in cshtml Index

@*@model IEnumerable<actiTest2.Context.Firmas>*@ 

@model PagedList.IPagedList<actiTest2.Controllers.FirmasController> 

@using PagedList; 
@using PagedList.Mvc; 

das ist der Punkt, wenn ich Modell nennen IEnumerable, Programmabsturz verursachen müssen IPagedList, aber wenn ich IPagedList nennen Programm sagen, dass ‚FirmasController‘ keine Definition für mein Modell enthält Anzeige.

Was könnte ich tun? Merge Controller und automatisch generierten Code mit get/set Errs?

Vielen Dank im Voraus

EDIT: Nach Anwendung der Lösung 'smoksnes' ich ein neues Problem bekommen:

http://i.imgur.com/DbtIvMf.png

+0

Sein '@model PagedList.IPagedList ' (unter der Annahme 'db.Firmas' gibt Objekte zurück, die typeof' Firmas' sind) –

Antwort

0

Ändern Sie Ihr Modell in der Ansicht (erste Zeile):

@model PagedList.IPagedList<actiTest2.Context.Firmas> 

Wenn Sie @model PagedList.IPagedList<actiTest2.Controllers.FirmasController> verwenden, versuchen Sie, Ihren Controller als Modell zu verwenden.

So sollte Ihrer Ansicht nach wie folgt aussehen:

@using PagedList 
@using PagedList.Mvc 
@model PagedList.IPagedList<actiTest2.Context.Firmas> 

<p> Content here </p> 

Und in Ihrem Controller:

public ActionResult Index(int? page) 
{ 
    // Order the collection before skipping. 
    var firmas = db.Firmas.OrderBy(x => x.Name); // Or some property. 
    if (Request.HttpMethod != "GET") 
    { 
     page = 1; 
    } 
    int pageSize = 2; 
    int pageNumber = (page ?? 1); 

    return View(firmas.ToPagedList(pageSize, pageNumber)); 
} 

Weitere Informationen über Fehler hier:

The method 'OrderBy' must be called before the method 'Skip' Exception

Die Ausnahme bedeutet, dass Sie immer Sie benötigen eine sortierte Eingabe, wenn Sie Überspringen anwenden, auch für den Fall, dass der Benutzer nicht auf eine Spalte klickt, um durch zu sortieren.

Und speziell für ToPagedList().

+0

Jetzt habe ich ein Problem in Controller, wenn ich die Ansicht in Index-Methode zurückgeben . NotSupportedException, bearbeite ich den ersten Post, um ein Bild anzuzeigen. –

+0

Was ist das Problem, das Sie in der Steuerung bekommen? – smoksnes

+0

Gepostetes Bild auf Anfangspost –