2016-05-30 16 views
1

Ich verwende die Html.DropDownListFor(), um ein Dropdown mit Daten aus einer Liste anzuzeigen. Die Listenelemente haben eine boolesche Eigenschaft namens IsPublic, die definiert, ob dieses Element öffentlich ist oder nicht.Html.DropDownListFür die Gruppierung nach Bool - show string statt bool value

Hier ist, wie ich das Drop-down definieren:

@Html.DropDownListFor(m => m.SelectedLayout, 
        new SelectList(Model.Layout, "LayoutString", "LayoutName", "IsPublic", 1)) 

Wie Sie sehen können, bin ich von der Unterkunft Gruppierung IsPublic.

enter image description here

Beachten Sie, wie die Gruppierung durch den Booleschen Wert durchgeführt wird (true und false): Wie erwartet, wird die Gruppierung die folgende Art und Weise, mit der folgenden Benennung der Gruppen erfolgt.

Gibt es eine Möglichkeit für mich, diese Gruppierung als eine benutzerdefinierte Zeichenfolge anzuzeigen, obwohl Gruppierung auf dem booleschen Wert? Also, wenn IsPublic == true den Gruppierungsnamen als Public anzeigen und umgekehrt IsPublic == false Gruppierungsname anzeigen als Private?

+0

Sie können dies tun, indem Sie einen neuen 'SelectListGroup' Erstellen und seine' Name'-Eigenschaft, (basierend auf dem 'bool' Wert) und dann neue' SelectListItem' Erstellen und Einstellen der 'Group' Eigenschaft, wie beschrieben im zweiten Teil von [diese Antwort] (http://stackoverflow.com/questions/37151572/constructing-a-select-list-with-optgroup-groups/37152663#37152663). Sie haben das Modell nicht gezeigt oder welche Werte es enthalten könnte, also ein bisschen schwer, ein Codebeispiel zu geben –

Antwort

2

Sie könnten einfach eine Eigenschaft "get only" in Ihrer Klasse verwenden und sie zum Gruppieren verwenden.

public string DisplayPublic { 
    get { return IsPublic ? "Public" : "Private"; } 
} 
+0

Natürlich ist dies die Lösung. Das funktioniert wie ein Zauber! Schätze die Hilfe! – Detilium