2009-08-04 19 views
0

In einer einzigen Ansicht habe ich drei Sätze von ausgelagerten Daten. Die für jedes Modell bedeutet, werde ichSo geben Sie mehrere Datensätze in ASP.NET MVC frei

  • Die Objekte
  • Der Seitenindex
  • Die Seitengröße

Mein erster Gedanke war zum Beispiel:

public class PagedModel<T> where T:class 
{ 
    public IList<T> Objects { get; set; } 
    public int ModelPageIndex { get; set; } 
    public int ModelPageSize { get; set; } 
} 

dann mit ein Modell, das der Aktion zugeführt werden soll, wie zum Beispiel:

public class TypesViewModel 
{ 
    public PagedModel<ObjectA> Types1 { get; set; } 
    public PagedModel<ObjectB> Typed2 { get; set; } 
    public PagedModel<ObjectC> Types3 { get; set; } 
} 

Also, wenn ich dann zum Beispiel die Indexansicht erben vom Typ haben:

System.Web.Mvc.ViewPage<uk.co.andrewrea.forum.Web.Models.TypesViewModel> 

Nun meine erste aciton Methode für den Index ist einfach:

public ActionResult Index() 
    { 
     var forDisplayPurposes = new TypesViewModel(); 
     return View(forDisplayPurposes); 
    } 

Wenn ich dann zu wollen Seite, es ist hier, wo ich bin zu kämpfen, um zu entscheiden, welche Maßnahme zu ergreifen. Sagen wir, dass ich die nächste Seite des Page2 Model2-Modells auswähle. Was sollte die Aktion aussehen für diese, um die neue Ansicht, die die zweite Seite des Types2 PageModel

ich vielleicht dachte zurückzukehren, um die Aktion zu duplizieren, sondern verwenden Sie es mit POST

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(TypesViewModel model) 
{ 
    return View(model); 
} 

Ist das ein guter Weg, um es anzugehen. Ich verstehe, dass es immer Session gibt, aber ich habe mich nur gefragt, wie so etwas derzeit erreicht wird. Wenn irgendwelche besten Methoden gegenseitig akzeptiert wurden und Dinge.

So einfach, eine Seite mit mehreren ausgelagerten Modellen. Wie behalte ich die Daten für jede Verwendung eines Wrapper-Modells? Welcher Weg sollte man im Modell übergeben und die Art und Weise sollten Sie Seite der Daten, dh Formularübermittlung

Schließlich habe ich also

{controller}/{action}/{id}/{pageindex}/{pagesize} 

aber dies nur Konten für ein Modell der Routen berücksichtigen dies gesehen und ich möchte nicht wirklich die Seitengröße und den Seitenindex für die Anzahl der Modelle wiederholen, die ich im Wrappermodell habe.

Danke für Ihre Zeit !!

Andrew

+0

Was ist die Frage? Wie können Sie Ihre Routen erstellen? –

+0

Einfach eine gute Möglichkeit, Routen und das Modell zu behandeln, wenn eine einzelne Seite mehrere Datensätze enthält, die separat gepaged werden müssen. Ich möchte nicht pageIndex1/pageSize1/pageIndex2/pageSize2 etc ... –

Antwort

0

IMHO, wenn Sie nicht nur Sammlung von Objekten würde, aber Sammlung von einigen erweiterten Typ, zum Beispiel, so etwas wie:

public class PagedModelElement<T> where T:class 
{ 
    public byte Step { get; set; } 
    public string Name { get; set; } 
    public T Value { get; set; } 
} 

public class PagedModel<T> where T : class 
{ 
    public IList<PagedModelElement<T>> Objects { get; set; } 
} 

ModelPageIndex nicht benötigt, weil Sie leicht zurückkehren Alle Objekte, die zu einer Seite gehören (Sie können den Indexer verwenden), sowie ModelPageSize können mit der Funktion Count() aller Objekte berechnet werden, die zu einer bestimmten Seite gehören.

So brauchen Sie nicht über die Weitergabe dieser beiden Parameter in URL zu kümmern, die nur param Sie brauchen, ist PageNo:

{controller}/{action}/{pageNo} 
Account/ShowUsers/3 
+0

Hallo danke für den Kommentar. Aber was ich meine ist, dass auf einer Seite zum Beispiel 3 Datensets vorhanden sind und jedes separat gepatcht werden kann. So befindet sich beispielsweise Datensatz 1 auf Seite 1, Datensatz 2 auf Seite 5 und Datensatz 3 auf Seite 50! An dieses Szenario denke ich gerade! Ich freue mich über Ihre Zeit und Ihr Feedback! Andrew :-) –

Verwandte Themen