Wie kann ich den ausgewählten Wert eines Html.DropDownListFor festlegen? Ich habe online nachgesehen und festgestellt, dass dies mithilfe des vierten Parameters wie folgt erreicht werden kann:
@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country")
Meine Auswahlliste wird dann folgendermaßen angezeigt:
<select id="ShipFromCountries" name="ShipFromCountries">
<option value="">Please select a country</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
...
</select>
Aus irgendeinem Grund bleibt Großbritannien ausgewählt, aber ich möchte, dass "Bitte ein Land auswählen" ausgewählt wird.
Weiß jemand, wie ich das erreichen kann?
BEARBEITEN
Ich habe meinen Code aktualisiert, da sich die Funktionalität geringfügig geändert hat, dieses Problem jedoch immer noch auftritt. Das ist aus meiner Sicht:
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
1
Ist die ID der, die option
ich auswählen möchte, habe ich auch mit dem Text der versucht, option
aber das funktioniert auch nicht.
Irgendwelche Ideen?
quelle
OrderTemplates
Ihren Versuch binden, an eineViewBag
Eigenschaft vom Typ zu bindenIEnumerabe<SelectListItem>
. Ein<select>
Element kann jedoch nicht an eine Sammlung komplexer Objekte (nur einenFür mich hat das nicht so geklappt:
Regler:
Aussicht:
JQuery:
quelle
Wenn Sie ein Objekt wie folgt übergeben:
Sie sagen: die Quelle (
Model
) und der Schlüssel ("Code"
), den Text ("Name"
) und den ausgewählten Wert0
. Sie haben wahrscheinlich keinen0
Wert für dieCode
Eigenschaft in Ihrer Quelle , daher wählt der HTML-Helper das erste Element aus, das den tatsächlichen ausgewählten Wert an dieses Steuerelement übergibt.quelle
Stellen Sie sicher, dass Sie den ausgewählten Wert gekürzt haben, bevor Sie ihn zuweisen.
//Modell
//Regler
//Aussicht
quelle
Wenn Sie wissen, was in der Ansicht angezeigt wird, können Sie den Standardwert auch über Controller festlegen, anstatt ihn in der Datei view / cshtml einzurichten. Es ist nicht erforderlich, den Standardwert von der HTML-Seite festzulegen.
In der Controller-Datei.
In der .cshtml-Datei.
quelle
Du solltest die Klasse vergessen
Verwenden Sie dies in Ihrem Controller:
Wählen Sie den Wert:
Fügen Sie die Liste zu den ViewData hinzu:
Verwenden Sie dies in Ihrer Ansicht:
- -
Weitere Informationen unter: http://www.asp.net/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc
quelle
Fügen Sie den Controller-Bereich hinzu
Fügen Sie den HTML-Abschnitt hinzu
Eine einfache Methode
quelle
Für mich allgemeine Lösung :)
quelle
Linq to Dropdown mit leerem Element, ausgewähltem Element (funktioniert 100%)
(stark typisiert, minimale Fehlerwahrscheinlichkeit) Alle Modelländerungen werden in der Bindung berücksichtigt
Regler
Aussicht
Diese Methode zum Binden von Daten ist ebenfalls möglich
quelle
Ich weiß, dass dies nicht wirklich eine Antwort auf die Frage ist, aber ich suchte nach einer Möglichkeit, die DropDownList aus einer Liste im laufenden Betrieb in der Ansicht zu initialisieren, als ich immer wieder auf diesen Beitrag stieß.
Mein Fehler war, dass ich versucht habe, eine SelectList aus einem Wörterbuch wie folgt zu erstellen:
Ich habe dann im offiziellen msdn-Dokument nachgesehen und festgestellt, dass
DropDownListFor
dies nicht unbedingt einSelectList
, sondern einIEnumerable<SelectListItem>
: erfordert.In meinem Fall kann ich wahrscheinlich auch das
Model.Locality
ausgewählte Element weglassen , da es a) das einzige Element ist und b) es bereits in derSelectListItem.Selected
Eigenschaft .Für den Fall, dass Sie sich fragen, ist die Datenquelle eine AJAX-Seite, die mithilfe des SelectWoo / Select2-Steuerelements dynamisch geladen wird.
quelle
Sie müssen eine bekommen und eine andere einstellen. Der ausgewählte Wert kann nicht mit dem Element übereinstimmen, das Sie festlegen möchten.
Ich verwende das Enum-Wörterbuch für meine Liste, deshalb gibt es ein Paar "Schlüssel", "Wert".
quelle
Ich hatte ein ähnliches Problem, ich habe den Namen ViewBag und Element als denselben verwendet. (Tippfehler)
quelle
Dies sind CSS-Probleme. Ich weiß nicht, warum @ Html.DropDownListFor in Bootstrap 4 am besten funktioniert. Dies ist sicherlich ein Problem beim Klassendesign. Wenn Ihr Dropdown-Eingabefeld über CSS-Auffüllung verfügt, ist die Arbeitsumgebung wie folgt: #px, # px; Element dann deaktivieren Sie es. Hoffe das wird funktionieren.
quelle