Html.ActionLink Probleme
-
20-08-2019 - |
Frage
Ich versuche, eine Verbindung zu schaffen, um die Suchergebnisse zu filtern.
<%= Html.ActionLink("Filter Results", "Index", new { page = Model.RestaurantList.PageIndex(), searchText = Model.SearchText, useFilter = true, filterOption = Model.FilterOption, filterText = Model.FilterText }, null)%>
Die Controller-Definition ist als solche
public ActionResult Index(int? page, string searchText, bool useFilter, string filterText, string filterOption)
Allerdings, wenn ich debuggen diese die Werte nicht richtig, auch der useFilter Variable gesetzt.
Mein Link gemacht wird localhost / home / index / true? Page = 0
Alle Ideen, wie dieses Problem beheben?
Lösung
Das Codesegment sieht gut aus. Ich denke, es gibt zwei mögliche Fehler:
- Falsche Routeninformationen: Überprüfen Sie die routes.MapRoute (...) ruft in global.ascx.cs / vb-Datei, um sicherzustellen, eine Route für Heim # Index Aktion richtig konfiguriert
- Falsche Steuerung: versuchen, die Überlastung von Action verwenden, die explizit einen Controller gibt
Wenn Sie immer noch nicht leisten können zu arbeiten, möchten Sie vielleicht weitere Informationen veröffentlichen (wie Route Mapping-Code, Name des View / Controller)
Andere Tipps
Es sieht aus wie es sollte funktionieren.
Haben Sie sich vergewissert, dass die Modellfelder Sie auf die Action tatsächlich Daten enthalten geben werden?
Allerdings, wenn ich debuggen diese die Werte nicht richtig, auch den useFilter Variable gesetzt. Mein Link gemacht wird localhost / home / index / true? Page = 0
Ich denke, Ihr useFilter Parameter tatsächlich wiedergegeben wird. Es liegt an der Strecke abgebildet, denke ich.
Versuchen Sie, einen fest codierten Wert für den Such auf
Wenn es auftaucht, dann setzen Sie nicht Ihr Modell in der Steuerung.
Ich hatte eine ähnliche Situation.
So etwas wie folgt aus:
Html.ActionLink("Click me", "Index", "Student",
{ ID = theclass.StudentID }, null)
macht immer als
localhost/myapp/Student/Index/1234
Während ich experimentiere, bemerkte ich, dass Index
Teil der URL verschwunden, wenn ich die Parameternamen von ID
zu so etwas wie IDX
ändern
localhost/myapp/Student/?IDX=1234
Es stellt sich heraus, dass der Parametername ID
wegen der Standardroute Eintrag in Global.asax.cs Sonder ist (die RESTful-Business-Objektzugriffsmuster einrichtet)
Um dies zu umgehen, hörte ich einfach Index
mit einer ID zu nehmen und definiert stattdessen eine andere Methode wie folgt aus:
public ActionResult Detail(int ID)
Immerhin pro Restfull Design-Prinzip ist Index
bedeutet für die Ansicht „Liste der Business-Objekte“ oder eine Art Sammlung von Business-Objekt, nicht ein einzigen Business-Objekt. So Objekt Geschäft vorbei ID Index
ist eine Art, das Muster zu verletzen.
Statt der Arm von Twist und zwingen mein umständlich Design, wechselte ich auf natürliche Art und Weise.
Ich glaube, die beste Praxis Index
Einstiegspunkt für die Gestaltung ist es zu halten Parameter weniger oder übergeben nur die Filtration / Sortierparameter.