Ich arbeite derzeit an einer relativ einfachen MVC-App, die es dem Benutzer erlaubt, einige Suchdaten einzugeben, eine Liste der Ergebnisse zu erhalten und dann jedes Element usw. zu sehen. Alles läuft ziemlich gut, aber ich versuche jetzt, Paging zu implementieren aber einige Probleme haben.ASP.NET MVC Paging - Übergeben von komplexen Typen zurück zum Controller?
Meine Suchformular verwendet HTTP GET Anfordern der folgenden Aktion:
public ActionResult Results(PropertySearchData data, int? page)
{
...
IEnumerable<Property> search = mService.SearchProperties(data);
ViewData["SearchData"] = data;
return View("Results", "Site", search.ToPagedList(page ?? 0, 20));
...
}
Von hier aus ich meine Tabelle mit den Ergebnissen aus der IEnumerable Sammlung bauen in meiner Sicht übergeben. Außerdem habe ich ViewData verwendet, um die Suchparameter so zu speichern, dass ich sie weitergeben kann, wenn der Benutzer eine andere Seite anfordert.
Zum Beispiel auf der ersten Seite zu bekommen, würde Ich mag so etwas verwenden:
Html.ActionLink("First", "Results", new { data = ViewData["SearchData"], page = 1 })
Wenn jedoch diese Verbindung erzeugt wird, ist meine Verbindung entlang der Linien von
/Results?data=PropertySearchData&page=1
Wenn ich die ‚Seite‘ Parameter vollständig entfernen, und nur Viewdata übergeben [ „search“] als meine Strecke Wert ist, wird mein Link erzeugt, wie ich möchte (dh jedes Mitglied PropertySearchData entlang als Abfrage-String übergeben durch Ich denke, das liegt daran, dass die Bindung von Modellen nur dann richtig funktionieren kann, wenn Sie haben einen einzelnen Typ angegeben?
Ich kann mehrere Gründe sehen, warum das nicht funktioniert; Worauf ich Probleme habe, ist die "nette" Art und Weise herauszufinden, was ich versuche zu tun. Ich weiß, dass mir hier ein wesentliches Verständnis fehlen muss, daher wäre es sehr zu begrüßen, wenn ich ein paar Hinweise darauf bekommen könnte, wie ich das angehen soll.
Bitte beachte, dass ich wirklich mit HTTP GET haften möge (wie dies zu sehen, ist eine Seite Suchergebnisse).
Danke!
Ah, das ist schön und sauber, danke! – CapBBeard