Ich verwende die DropDownListFor-Hilfsmethode innerhalb einer Bearbeitungsseite und habe kein Glück, dass sie den von mir angegebenen Wert auswählt. Ich habe eine ähnliche Frage zu Stackoverflow bemerkt. Die vorgeschlagene Problemumgehung lautete: "Füllen Sie Ihre SelectList im Ansichtscode aus". Das Problem ist, dass ich das bereits versucht habe und es immer noch nicht funktioniert.
<%= Html.DropDownListFor(model => model.States, new SelectList(Model.States.OrderBy(s => s.StateAbbr), "StateAbbr", "StateName", Model.AddressStateAbbr), "-- Select State --")%>
Ich habe einen Haltepunkt festgelegt und die Existenz (und Gültigkeit) von model.AddressStateAbbr überprüft. Ich bin mir nur nicht sicher, was ich vermisse.
quelle
@Html.DropDownListFor(model => model.Title, (SelectList)ViewBag.Salutation, Resources.Labels.Unknown )
Versuchen:
oder in Razor-Syntax:
Die ausdrucksbasierten Helfer scheinen die Selected-Eigenschaft der SelectListItems in Ihrer SelectList nicht zu berücksichtigen.
quelle
Wenn Sie es richtig machen und ein Modell verwenden - im Gegensatz zu all diesen ViewBag-Verrückten - und das Problem immer noch sehen, liegt es daran, dass
@Html.DropDownListFor(m => m.MyValue, @Model.MyOptions)
es nichtMyValue
mit den Auswahlmöglichkeiten übereinstimmen kann, die es hatMyOptions
. Die zwei möglichen Gründe dafür sind:MyValue
ist Null. Sie haben es in Ihrem ViewModel nicht festgelegt. Wenn Sie einen vonMyOptions
haben,Selected=true
wird dies nicht gelöst.MyValue
den Typen inMyOptions
. Wenn dies der FallMyValue
ist(int) 1
, aberMyOptions
es sich um eine Liste gepolsterter Zeichenfolgen handelt{"01", "02", "03", ...}
, wird offensichtlich nichts ausgewählt.quelle
<option value="2">some text</option>
. Es scheint tatsächlich zu versuchen, die Ansichtsmodelleigenschaft mit dem Anzeigetext und nicht mit dem Wertattribut abzugleichen, um die ausgewählte Option auszuwählen. Das ließ mich eine Weile gehen.Ohne diese Frage anzusprechen, kann es zukünftigen Googlern helfen, wenn sie meinem Gedankenweg folgen:
Ich wollte eine Mehrfachauswahl und dieser Attribut-Hack auf DropDownListFor wurde nicht automatisch ausgewählt
Stattdessen hätte ich ListBoxFor verwenden sollen, wodurch alles funktioniert hat
quelle
Ich habe auch ein ähnliches Problem und löse es wie folgt, setze das
Die Eigenschaft model.States auf Ihrem Controller entspricht dem, was Sie auswählen müssen
model.States = "Kalifornien"
und dann erhalten Sie "Kalifornien" als Standardwert.
quelle
Dieses Problem ist häufig. Ändern Sie den Namen der viewbag-Eigenschaft in einen anderen als den auf der Seite verwendeten Modellvariablennamen.
quelle
Eine andere Sache, um zu überprüfen, ob es nicht nur Ihr eigener Code ist, ist sicherzustellen, dass es keine Javascript-Funktion gibt, die den Wert beim Laden der Seite ändert. Nachdem ich stundenlang meinen Kopf gegen eine Wand geschlagen hatte, um all diese Lösungen durchzulesen, stellte ich fest, dass dies mit mir geschah.
quelle
Ich bin kürzlich auf dieses Problem gestoßen. Es machte mich ungefähr eine Stunde lang verrückt. In meinem Fall, ich war nicht mit einer
ViewBag
Variable mit dem gleichen Namen wie die Modelleigenschaft.Nach dem Nachverfolgen von Änderungen an der Quellcodeverwaltung stellte sich heraus, dass meine Aktion ein Argument mit demselben Namen wie die Modelleigenschaft hatte:
In der Ansicht:
Ich habe einfach das Argument der Aktion in einen anderen Namen geändert und es hat wieder funktioniert:
Ich nehme an, man könnte auch den Eigenschaftsnamen des Modells ändern, aber in meinem Fall ist der Argumentname bedeutungslos, also ...
Hoffentlich erspart diese Antwort jemand anderem die Mühe.
quelle
Das Problem war zumindest für mich mit dem verbunden
IEnumerable<T>
.Grundsätzlich geschah, dass die Ansicht und das Modell nicht dieselbe Referenz für dieselbe Eigenschaft hatten.
Wenn du das tust
Binden Sie dies dann mit dem
Die Ansicht verliert den Überblick über die CoolNames-Eigenschaft. Eine einfache Lösung besteht darin,
.ToList()
nach dem Erstellen einer Projektion (.Select()
);) hinzuzufügen .quelle
Ich hatte das gleiche Problem. Im folgenden Beispiel Die Variable ViewData ["DATA_ACREDITO_MODELO_INTEGRADO"] verfügt über eine SelectListItem-Liste mit einem ausgewählten Standardwert, das jedoch nicht visuell wiedergegeben wird.
Ich habe es gelöst, indem ich das erste Argument von DropdownList anders gemacht habe als das id-Attribut.
...
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich hatte 2020 das gleiche Problem.
Es stellte sich heraus, dass das Problem darin bestand, dass die Modelleigenschaft "Titel" hieß. Ich habe sie in "GivenTitle" umbenannt und sie funktioniert jetzt wie erwartet.
Von
zu
quelle