2010-02-08 9 views
8

Estoy tratando de presentar una lista de botones de opción en MVC 2 RC 2 (C#) con la siguiente línea:Cómo pasar una enumeración a Html.RadioButtonPara obtener una lista de botones de opción en MVC 2 RC 2, C#

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

pero se me acaba de dar la siguiente excepción en tiempo de ejecución:

las plantillas se pueden utilizar solamente con el acceso de campo, acceso a la propiedad, el índice de matriz de una sola dimensión, o de un solo parámetro expresiones indexador personalizado.

¿Es esto posible y, de ser así, cómo, por favor?

Respuesta

6

Puede crear una plantilla llamada "enumeración" en /Views/Shared/EditorTemplates/Enum.ascx

con el siguiente contenido:

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

Esto sólo enumera los valores enum.

Usted puede llamar a esto con

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

Por supuesto se puede cambiar de DropDownList - la generación de la lista de selección es la parte principal. :-) – amarsuperstar

+1

No veo un método equivalente en 'Html.RadioButtonFor'. Parece que el método de ayuda solo toma un valor. ¿Hay alguna alternativa que haga lo que pide el PO? –

+0

-1 'RadioButton' y' RadioButtonFor' no toman 'SelectListItem's. – Stijn

Cuestiones relacionadas