Estoy tratando de crear una lista desplegable con una enumeración de propiedad en ASP.NET MVC Núcleo utilizando la etiqueta de ayuda en una maquinilla de Afeitar de vista:

Aquí es el modelo:

public class PersonalMember : Member
{
    [Required, Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Required, Display(Name = "Last Name")]
    public string LastName { get; set; }

    [EnumDataType(typeof(Gender))]
    public Gender GenderType { get; set; }
}

public enum Gender
{
    Male = 1,
    Female = 2
}

Aquí es parte de un formulario en la vista:

<div class="form-group">
    <label asp-for="GenderType" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <select asp-for="GenderType" asp-items="Html.GetEnumSelectList<GenderType>()">
            <option selected="selected" value="">Please select</option>
        </select>
        <span asp-validation-for="GenderType" class="text-danger" />
    </div>
</div>

El problema que estoy teniendo es que después de Html.GetEnumSelectList, GenderType no se reconoce y se muestra como un error.

¿Alguien sabe cómo solucionar esto?

  • intenta especificar como… @(Html.GetEnumSelectList<GenderType>())»
InformationsquelleAutor David Sharpe | 2017-01-19

5 Comentarios

  1. 47

    GenderType es su nombre de la propiedad, no el tipo Enum. El GetEnumSelectList método de espera, es el tipo de la Enumeración, no el nombre de la propiedad en el modelo.

    Intente esto:

    Html.GetEnumSelectList<Gender>()
    • Puede ser que necesite para marcarlo como metadatos en el asp como: Html.GetEnumSelectList<GenderType.El Meta.Género>().. El OP no marca la versión de MVC framework se utiliza
    • He tratado de Html.GetEnumSelectList<Género>() y Html.GetEnumSelectList<enum de Género>() – ambos se muestran como los errores
    • ¿qué error hacer que usted consigue cuando usted use mi ejemplo anterior? El mismo? No creo que tu segundo ejemplo es válido sintaxis
    • En maquinilla de afeitar, usted necesita para rodear por ( ): @Html.GetEnumSelectList<Género>()); Porque de afeitar interpreta la < > como etiquetas html de otra manera
    • podría usted ve esto, por favor? stackoverflow.com/questions/48094102/…
  2. 40

    Creo que accidentalmente se utiliza GenderType en lugar de Gender. La sintaxis correcta es

    <select asp-for="GenderType" asp-items="Html.GetEnumSelectList<Gender>()">
        <option selected="selected" value="">Please select</option>
    </select>
    • Esta debe ser la respuesta, utiliza la moderna etiqueta de ayudantes Y se muestra cómo implementar la GetEnumSelectList<Enum>() para construir el elemento de la lista.
  3. 13

    Usted puede simplemente utilizar la sintaxis de Afeitar:

    @Html.DropDownList("StudentGender", 
        Html.GetEnumSelectList<Gender>(),
        "Select Gender",new { @class = "form-control" })
    • Esto es lo que necesitamos!
  4. 0

    utiliza el Género de asp-elementos=»Html.GetEnumSelectList -GenderType- ()» en lugar de GenderType

    tales como asp-elementos=»Html.GetEnumSelectList -Género- ()»

Dejar respuesta

Please enter your comment!
Please enter your name here