2010-02-08 6 views
8

Ich versuche, eine Radio-Button-Liste in MVC 2 RC 2 (C#) mit der folgenden Zeile:Wie übergebe ich eine Enum an Html.RadioButtonFür eine Liste von Radio-Buttons in MVC 2 RC 2, C#

<%= Html.RadioButtonFor(model => Enum.GetNames(typeof(DataCarry.ProtocolEnum)), 
         null) %> 

aber es gibt mir nur die folgende Ausnahme zur Laufzeit:

Vorlagen verwendet nur mit Feldzugriff, Zugriff auf Eigenschaften, eindimensionales Array-Index oder Einzelparameter benutzerdefinierten Indexer Ausdrücke werden kann.

Ist das möglich und wenn ja, wie, bitte?

Antwort

6

Sie können eine Vorlage namens "Enum" in /Views/Shared/EditorTemplates/Enum.ascx

Mit folgendem Inhalt:

<%= Html.DropDownList(string.Empty, Enum.GetNames(Model.GetType()).ToList().ConvertAll(e => new SelectListItem() { Text = e.ToString(), Value = e , Selected = e.Equals(Model.ToString())})) %> 

Diese aufzählt nur die enum-Werte.

Sie können dies nennen mit

Html.EditorFor(m => m.YourEnumProperty, "Enum" /*The name of the template*/) 
+0

Natürlich können Sie es von Dropdownlist ändern können - die Erzeugung der Auswahlliste der Hauptteil ist. :-) – amarsuperstar

+1

Ich sehe keine äquivalente Methode für 'Html.RadioButtonFor'. Es scheint, dass die Hilfsmethode nur einen Wert hat. Gibt es eine Alternative, die das tut, was das OP verlangt? –

+0

-1 'RadioButton' und' RadioButtonFor' nehmen 'SelectListItem' nicht an. – Stijn