Wie kann ich überprüfen, ob FormCollection["key"] existiert
Ich bin mit ASP.NET MVC 3 und ich post ein Formular, in meiner Sicht, mit einem @Html.ListBoxFor
Wann erhalte ich die gepostet form als FormCollection, wie kann ich überprüfen, ob ein Element ausgewählt wurde, in die ListBox?
In meinem controller scheint es kein Element mit dem Namen collection["Company.RepresentingCountries"]
da keine <select>
option ausgewählt wurde.. und Diese Ergebnisse in eine "Object reference not set to an instance of an object." - Fehlermeldung, wenn ich versuche zu prüfen, für Sie! Was ist das Protokoll hier?
Dank!
InformationsquelleAutor Niclas Lindqvist | 2011-06-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht gezeigt, wie Sie Ihre
ListBoxFor
Helfer definiert ist, so kann ich nur raten hier. Dies sagte Sie Sprach überFormCollection
die Nutzung würde ich nicht empfehlen. Was ich empfehlen ist die Verwendung von view models. Also nehmen wir mal ein Beispiel:Modell:
Controller:
Anzeigen:
Lindqvist,
ModelState.IsValid
wird sichergestellt, dass alle Validierungsregeln, die Sie auf Ihrem view-Modell eingehalten werden.nicht die Antwort auf die Frage im Titel
wenn die Beantwortung einer Frage, ALSO, ich persönlich bevorzuge zu berücksichtigen, die OP ' s Szenario, um die bestmögliche Antwort nach mir, statt einfach blind und wörtlich die Beantwortung der Frage.
InformationsquelleAutor Darin Dimitrov
Können Sie access-Formular den Inhalt in dieser Weise:
Können Sie sehen, was Sie schrieb Debuggen mit Tools wie DebugView.
Natürlich können Sie einen Haltepunkt festlegen, hier oder überprüfen Sie diese Sammlung in irgendeiner anderen Art und Weise.
<select> und immer hat 'selected' - Wert bei der Buchung (wenn der Benutzer nicht gewählt hat, dann ist es die erste option, die war drin), also wenn Sie "leer" ist Standard, es wird geschrieben in der Sammlung und deren Wert "" (string.Leer).
UPDATE, Wenn select multiple="multiple" - Attribut, dann wird keiner ausgewählt-Wert bedeutet, dass die form der Serialisierung nicht berücksichtigt, so dass es nicht Teil der Kollektion form. Um zu überprüfen, wenn Sie haben gewählten Wert verwenden
collection["Company.RepresentingCountries"] == null
oderString.IsNullOrEmpty(collection["Company.RepresentingCountries"])
. Beides wird wahr, wenn es keine ausgewählten Wert, obwohl die zweite wahr sein könnte, falls Sie leer option wählen.<select multiple="multiple">
, so es scheint nicht, wie es hat 'gewählt' gesetzt, so gibt es keine Schlüssel mit dem Namen der Firma.RepresentingCountries in meinem FormCollection.Ich habe mehrere Fall mit keinen ausgewählten Wert. Wird es nicht serialisiert in form-Kollektion. Ich update meine Antwort jetzt.
Vielen Dank für das update, habe ich eigentlich immer noch der Fehler, wenn dabei
if(!string.IsNullOrEmpty(collection["Company.RepresentingCountries"]))
Aber vielleicht null würde getan haben, der trick!Gut, ich versuchte beide (multiselect auf dem Formular, dass ich auf der Arbeit und zurück gebucht, controller), und es funktionierte, und man konnte sich die Ausnahme nur, wenn die Indizierung der Sammlung, so erhalten Sie es und bei der Prüfung auf null. Ich werde prüfen, alternativen für das jetzt.
Welche version von mvc verwenden Sie? Ich nicht den Fehler, auch Sammlung.GetValue("adfasdf") gibt null zurück, nicht die Ausnahme für mich.
InformationsquelleAutor Goran Obradovic