为 DropdownList 使用枚举:缺少 using 指令或程序集引用

Lui*_*Flo 2 c# enums asp.net-core-mvc asp.net-core

我正在尝试在 ASP.NET Core 中创建一个带有枚举属性的下拉列表。

这是模型(视图模型):

namespace Application.Models.ApplicationviewModels
{
    public class StoreIndexData
    {
        [Display(Name = "Departamento")]
        public int DepartmentID { get; set; }
        public string DepartmentName { get; set; }    

        [Display(Name = "Distrito")]    
        public int DistrictID { get; set; }
        public string DistrictName { get; set; }
        [EnumDataType(typeof(tiendacadenaenum))]
        public tiendacadenaenum tienda_cadena {get;set;}
    }
    public enum tiendacadenaenum
        {
        [Display(Name = "Cencosud")]
        Cencosud,
        [Display(Name = "Cinerama")]
        Cinerama,
    }
}
Run Code Online (Sandbox Code Playgroud)

这是视图的一部分:

@model Application.Models.ApplicationviewModels.StoreIndexData
@using Application.Models

    <div class="form-group">
        <label asp-for="tienda_cadena" class="cold-md-2"></label>
        <div class="col-md-10">
            <select asp-for="tienda_cadena" class="form-control"
                    asp-items="Html.GetEnumSelectList<tiendacadenaenum>()">"></select>
            <span asp-validation-for="tienda_cadena" class="text-danger"></span>
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

这里显示有问题:

Html.GetEnumSelectList<tiendacadenaenum>()">
Run Code Online (Sandbox Code Playgroud)

声称缺少 using 指令或程序集引用。关于如何解决这个问题的任何想法?

在此处输入图片说明

Bis*_*hoy 5

添加@using Application.Models.ApplicationviewModels到视图中。

此外,建议使用命名约定,因为这会让其他人更容易阅读您的代码,特别是使用 PascalCase 来表示枚举名称、属性名称、命名空间名称和方法名称。

所以代码应该是这样的:

namespace Application.Models.ApplicationViewModels
{
    public class StoreIndexData
    {
        [Display(Name = "Departamento")]
        public int DepartmentId { get; set; }
        public string DepartmentName { get; set; }    

        [Display(Name = "Distrito")]    
        public int DistrictId { get; set; }
        public string DistrictName { get; set; }
        [EnumDataType(typeof(TiendaCadenaEnum))]
        public TiendaCadenaEnum TiendaCadena { get; set; }
    }

    public enum TiendaCadenaEnum
        {
        [Display(Name = "Cencosud")]
        Cencosud,
        [Display(Name = "Cinerama")]
        Cinerama,
    }
}

@model Application.Models.ApplicationviewModels.StoreIndexData
@using Application.Models.ApplicationviewModels
@using Application.Models

    <div class="form-group">
        <label asp-for="TiendaCadena" class="cold-md-2"></label>
        <div class="col-md-10">
            <select asp-for="TiendaCadena" class="form-control"
                    asp-items="Html.GetEnumSelectList<TiendaCadenaEnum>()">"></select>
            <span asp-validation-for="TiendaCadena" class="text-danger"></span>
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)