none
Combobox vinculado a un enumerado RRS feed

  • Pregunta

  • Buenas , tengo definido este enumerado

            public enum sexoPersona
            {
                [Description("Masculino")]
                M,
                [Description("Femenino")]
                F
            }


    Y lo que intento es en un formulario añadir un combobox para vincular este enumerado y enviar este parámetro al controlador.

    Para el resto de parámetros uso un código como este

            <div class="form-group">
                @Html.LabelFor(model => model.nombre, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.nombre, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.nombre, "", new { @class = "text-danger" })
                </div>
            </div>

    Y en el controlador veo como la propiedad nombre del objeto Clientes me llega con el valor

    Pero para el combobox se como mostrarlo por pantalla pero no como asignarselo a la propiedad sexo del Modelo

    Con este código se me muestra en el formulario el combobox con los valores del enumerado pero no recibe el parámetro el controlador , supongo que me falta pasarle el nombre que no se como hacerlo.

             @Html.DropDownList("MyType",
               EnumHelper.GetSelectList(typeof(testweb.Classes.EnumUtils.sexoPersona)),
           " -- Selecciona --",
           new { @class = "form-control" })

    Gracias,



    • Editado golfgti6 jueves, 11 de mayo de 2017 13:18
    jueves, 11 de mayo de 2017 13:17

Respuestas

Todas las respuestas

  • hola

    Pero en el model que asignas a la view la propiedad "MyType" este deberia ser una propiedade el tipo del enum

    ademas porque no usaste

    @Html.DropDownListFor(m=>m.MyType,  EnumHelper.GetSelectList(typeof(testweb.Classes.EnumUtils.sexoPersona)),...

    o como se menciona aqui

    Using Drop Down Lists with enums in ASP.NET MVC

    el

     @Html.EnumDropDownListFor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta golfgti6 jueves, 11 de mayo de 2017 13:56
    jueves, 11 de mayo de 2017 13:46
  • hola

    Pero en el model que asignas a la view la propiedad "MyType" este deberia ser una propiedade el tipo del enum

    ademas porque no usaste

    @Html.DropDownListFor(m=>m.MyType,  EnumHelper.GetSelectList(typeof(testweb.Classes.EnumUtils.sexoPersona)),...

    o como se menciona aqui

    Using Drop Down Lists with enums in ASP.NET MVC

    el

     @Html.EnumDropDownListFor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Gracias ya lo he visto

          <div class="form-group">
                @Html.LabelFor(model => model.sexo, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownListFor(m=>m.sexo,  EnumHelper.GetSelectList(typeof(test.Classes.EnumUtils.sexoPersona)))
                    @Html.ValidationMessageFor(model => model.sexo, "", new { @class = "text-danger" })
                </div>
            </div>

    De esta forma ya me funciona lo único que al cargar el combobox me CARGA el valor del enumerado y no la descripción , es decir me muestra por pantalla M o F

    Para que me muestre la descripción?

            public enum sexoPersona
            {
                [Description("Masculino")]
                M,
                [Description("Femenino")]
                F
            }
    

    Gracias,

    jueves, 11 de mayo de 2017 13:57
  • Hola golfgti6

    Inténta colocando el displayname en tu enum

       public enum sexoPersona
            {
                [Display(Name="Masculino")]
                M,
                [Display(Name="Femenino")]
                F
            }

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    jueves, 11 de mayo de 2017 14:22