Wie übernehme ich ein array als eine ASP.NET MVC-controller-action-parameter?
Habe ich eine ASP.net MVC-controller genannt Designs
hat eine Aktion mit der folgenden Signatur:
public ActionResult Multiple(int[] ids)
Jedoch, wenn ich versuche zu navigieren, um diese Aktion mit der url:
http://localhost:54119/Designs/Multiple?ids=24041,24117
Den ids
parameter ist immer null. Gibt es eine Möglichkeit, um MVC zu konvertieren, die ?ids=
URL-query-parameter in ein array für die Aktion? Ich habe gesehen, sprechen mit einem action-filter, aber soweit ich sagen kann, dass funktioniert nur für POSTs, wo das array übergeben wird, in der die Daten angefordert hat, anstatt in der URL selbst.
InformationsquelleAutor der Frage Grokys | 2012-02-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Standard-Modell von binder erwartet, dass diese url:
um erfolgreich zu binden:
Und wenn Sie funktionieren soll, mit Komma getrennte Werte " können Sie schreiben eine benutzerdefinierte binder Modell:
und dann konnte Sie dieses Modell binder zu einer bestimmten Handlung argument:
anwenden oder Global auf alle integer-array die Parameter in Ihrem
Application_Start
imGlobal.asax
:nun ist Ihr controller-Aktion könnte wie folgt Aussehen:
InformationsquelleAutor der Antwort Darin Dimitrov
Können Sie auch diese URL-format, und ASP.NET MVC wird alles für Sie tun. Aber, denken Sie daran, gelten die URL-Codierung.
InformationsquelleAutor der Antwort Cioxideru
Erweitern auf Darin dimitrovs Antwortetwas, was Sie Weg erhalten können, ist die Annahme einer einfachen
string
in Ihrer URL-parameter und wandelt Sie in ein array selbst:Wenn Sie einen parse-error, während dies zu tun (weil sich jemand übergeben Sie eine ungültige array), die Sie verursachen können Ihre exception-handler, um wieder eine
400 Bad Request
Fehler anstelle der Standard, mehr unfreundlich404 Not Found
Fehler, MVC gibt, wenn ein endpoint nicht gefunden.InformationsquelleAutor der Antwort TheHansinator
Ich weiß nicht, wo Groky URL-string kommt, aber ich hatte das gleiche problem mit javascript-aufrufen von mein controller/action. Es würde der Aufbau einer URL
null
1, oder viele "IDs" aus einem multiple-select-Liste (was ist das einzigartige an der Lösung, die ich teilen werde).Ich kopieren/eingefügt, Darin die custom-Modell von binder und verziert meine Aktion/parameter, aber es hat nicht funktioniert. Ich habe noch
null
bewertetint[] ids
. Selbst in der "sicheren" Fall, wo ich tatsächlich haben viele IDs.Landete ich ändern das javascript zum erzeugen eines ASP.NET MVC-freundlich-parameter array wie
Ich hatte zu tun einige dumme Sachen, aber
So, die vollen block war
Es ist chaotisch, aber es ist das erste mal, ich hatte zu hacken, wie dies in javascript.
InformationsquelleAutor der Antwort Anthony Mastrean