Unterstützung für optgroup in dropdownlist .NET MVC?
Weiter geht es von dieser Frage Programmgesteuertes erstellen einer drop-down-Liste ich würde gerne meine Liste zu haben, mehrere optgroup
- Listen zu. Ist das derzeit möglich?
Ich weiß, ich brauchen, um passieren eine Auswahlliste, um eine dropDownList aber nicht wissen, wie das hinzufügen von text, Wert, optgroup, um die Auswahlliste.
Will ich das Endergebnis zu produzieren:
<option value="">Please select</option>
<optgroup label="Option A">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</optgroup>
<optgroup label="Option B">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</optgroup>
</option>
InformationsquelleAutor der Frage KevinUK | 2009-03-03
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Suche durch den code auf der http://www.codeplex.com/aspnetes scheint nicht, dass weder in der Auswahlliste noch die DropDownList-extension-Methode unterstützt die Verwendung von OptGroup in eine Auswahl. Sieht aus wie Sie benötigen, schreiben Sie Ihre eigenen extension-Methode und erweitern SelectListItem enthalten die Gruppierung oder generieren, wählen Sie manuell im markup.
InformationsquelleAutor der Antwort tvanfosson
Meine Erweiterung ist ein bisschen komplizierter, aber es hat alle überladungen als original DropDownList hat.
Eigentlich habe ich es extra produzieren zu können DropDownList mit Gruppen und verwandelte in zwei verbundene wählt mit Hilfe von jDoubleSelect
InformationsquelleAutor der Antwort Serge Zab
Diese wurde Hinzugefügt ASP.Net MVC in version 5.2 und ist jetzt built-in.
Den Gruppe-Eigenschaft auf SelectListItem können Sie eine Gruppe bestimmen, die für jedes Element:
Neuen SelectList-Konstruktoren auch ermöglichen es Ihnen, geben Sie den Namen des Feldes, das die Gruppe enthält Titel, die auf der mitgelieferten Liste von Elementen.
Die HtmlHelper-DropDownList-und DropDownListFor Methoden erzeugen nun optgroup-Elemente basierend auf die Gruppen, die auf der Liste der Elemente.
Einfach!
InformationsquelleAutor der Antwort Dan Malcolm
Schreibe ich gerade eine Erweiterungen für hierzu finden Sie unter:
InformationsquelleAutor der Antwort lostway
Anmerkungen zu Daten für die client-Validierungen fehlen?
In Antwort auf Chrno Lieben, die Frage oben hinzufügen Serge Zab-Lösung - Milimetric ist fix für MVC3-clientseitiger Validierung der Attribute beim verwenden einer Reihe von Dropdown-Listen in der gleichen Ansicht:
InformationsquelleAutor der Antwort planetClaire
Serge Zab ' s Antwort war genau das, was ich suchte. Als ein eingefleischter VB-Programmierer, ich habe portiert, um dieses VB-Modul:
InformationsquelleAutor der Antwort Daz
Habe ich versucht, @Serge Zab-Lösung, die gut funktioniert, aber hatte einige Probleme mit dem unobtrusive validation, nach einiger Prüfung fand ich das problem.
Scheint es erforderlich, einige fehlende Attribute aus der select-element, wenn Sie wollen, dass die Jquery-Validierung, um das Feuer, nur nachdem Sie Ihre TagBuilder
Fügen Sie diese Attribute
und die unaufdringliche Validierung auslösen soll.
InformationsquelleAutor der Antwort Troublesum
In Serge Zab Antwortdata-Attribute, wie
data_valuename
dont marging in der richtigen formdata-valuename
.Habe ich ersetzt-code
tagBuilder.MergeAttributes(htmlAttributes);
imSelectInternal
Methode, um dieseInformationsquelleAutor der Antwort Bohdan Lyzanets
Nur ein Hinweis auf die Verwendung Serge ' s extension zu erstellen mehr als eine select-Liste auf der gleichen form. Ich hatte Probleme bekommen, die zweite select-Liste der Gruppen, und wenn ich überprüft die html generiert wird, die ich erkannte, hatten beide die gleiche id. Um dies zu beheben, gehen Sie in die SelectInternal Funktion in serge ' s extension auskommentieren/löschen Sie die folgenden zwei Zeilen:
tagBuilder.MergeAttribute("name", name, true /* replaceExisting */);
tagBuilder.GenerateId(name);
Alternativ können Sie auch nur pass einzigartigen id ' s zu jedem (obwohl die DropDownGroupListFor nicht die 'string name' - parameter, so müssen Sie eine überladung, die es tut)
InformationsquelleAutor der Antwort Aleksandr Albert
Brauchte ich eine Lösung zum behandeln einer Mehrfachauswahl mit optgroup, und ich verwendet, Serge Zab-Lösung. Ich habe gerade zwei Kommentare (zu lange für einen Kommentar).
Trotz seiner Forderungen, seiner Lösung unterstützt nicht alle vorhandenen überlastungen des DropDownListFor, da es nicht unterstützt MultiSelectList oder SelectList, oft verwendet in den Modellen. Aber das ist nicht schwer, diese.
Seine Lösung war nicht für mich arbeiten, für die Mehrfachauswahl zu initialisieren ausgewählte/nicht ausgewählte Elemente aus dem Modell : die ersten Werte waren nicht betroffen.
Habe ich gerade geändert die folgende Methode :
private static MvcHtmlString DropDownListHelper(...)
{
zurück SelectInternal(htmlHelper, optionLabel, Ausdruck, selectList, false /* allowMultiple */, htmlAttributes);
}
:
Und es funktioniert wie erwartet.
Natürlich ist das multiple-Attribut definiert werden muss :
@Html.DropDownGroupListFor(m => m ist.Ausgewählte, Modell.Werte, neue { multiple = "multiple" })
Danke an Serge für seine Antwort.
InformationsquelleAutor der Antwort AFract