2010-02-08 4 views
8

J'essaie de rendre une liste de boutons radio dans MVC 2 RC 2 (C#) en utilisant la ligne suivante:Comment passer une énumération à Html.RadioButtonFor pour obtenir une liste de boutons radio dans MVC 2 RC 2, C#

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

mais il est juste de me donner l'exception suivante lors de l'exécution:

les modèles peuvent être utilisés uniquement avec accès terrain, accès à la propriété, l'indice de tableau à une dimension ou expressions indexeur personnalisée à un seul paramètre.

Est-ce possible et si oui, comment?

Répondre

6

Vous pouvez créer un modèle appelé "Enum" dans /Views/Shared/EditorTemplates/Enum.ascx

Avec le contenu suivant:

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

Ce que énumère les valeurs enum.

Vous pouvez appeler cela avec

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

Bien sûr, vous pouvez le modifier à partir DropDownList - la génération de la liste de sélection est la partie principale. :-) – amarsuperstar

+1

Je ne vois pas une méthode équivalente sur 'Html.RadioButtonFor'. Il semble que la méthode d'assistance ne prend qu'une valeur. Y a-t-il une alternative qui fait ce que le PO demande? –

+0

-1 'RadioButton' et' RadioButtonFor' ne prennent pas 'SelectListItem's. – Stijn

Questions connexes