Ich habe den folgenden Code, der ein Dropdown mit einer Reihe von ganzzahligen Werten bevölkern soll und den aktuell ausgewählten Wert (in diesem Fall 13) das ausgewählte Element sein soll.SelectedItem nicht in SelectList in ASPNET.MVC
Ich habe die gleiche Technik, aber für String-Werte und es funktioniert super, erinnere mich jedes Mal, wenn ich zu der Ansicht, was der aktuelle Wert ist.
In Controller:
var x = new[] { 1, 2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
ViewData["Field"] = new SelectList(x, 13);
In Ansicht:
<%=Html.DropDownList("Field", (IEnumerable<SelectListItem>)ViewData["Field"])%>
Wenn ich das Viewdata debuggen und beobachten [ "Field"] Objekt, hat es eine selectedValue von 13 haben und so muss es sein die Ansicht erreichen, aber ignoriert werden, da alles, was ich auf der Seite sehe, ein Dropdown mit den Werten 1 bis 15 ist, aber mit 1 (keine ausgewählt, so zeigt die erste)
Ist das ein Fehler oder mache ich s etwas wirklich dumm?
Dank
Graeme
Spot auf - danke! Gott weiß, warum das ist anders als die String-Version, aber Ihre Lösung funktioniert ein Vergnügen! Vielen Dank!! – Graeme
Dies ist der richtige Weg zu gehen. Der erste Parameter ist der Feldname, an den der Wert angehängt wird. Dieser unterscheidet sich von dem Mechanismus, mit dem Sie die selectlistitem-Daten übergeben. Wenn Sie den gleichen Schlüssel verwenden, tun Sie doppelte Arbeit mit ein paar Daten, und das funktioniert nicht so gut. Ich bin jedoch ziemlich sicher, dass es die ausgewählte Eigenschaft verwenden wird, wenn es festgelegt ist. Dies wird es jedoch nicht einstellen. – Mallioch
Ich muss mich an eine frühere Version des Codes erinnern. Ich habe es nur überprüft und es verwendet die Selected-Eigenschaft, aber es gibt einige Bedingungen, unter denen es die ausgewählte Eigenschaft des Elements zurückgesetzt wird, abhängig davon, ob es die Daten aus der Ansicht abruft oder nicht. Ich werde einige Nachforschungen darüber anstellen müssen, ob dies immer noch der beste Weg ist, Drop-Downs zu handhaben oder nicht. – tvanfosson