[Flags]標識的Enum不能使用Html.GetEnumSelectList方法

在使用Asp.Net Core MVC寫程序時,對用戶類型做了如下定義:

namespace ManufacturingExecutionSystemCore.Enums
{    
    public enum UserType
    {
        [Description("無身份人員")]
        [Display(Name = "無身份人員")]
        UnidentifiedPerson=0x00,
        [Description("生產人員")]
        [Display(Name = "生產人員")]
        ProductionWorker = 0x01,
        [Description("生產主管")]
        [Display(Name = "生產主管")]
        ProductionHead =0x02,
        [Description("生產經理")]
        [Display(Name = "生產經理")]
        ProductionManager = 0x04,
        [Description("倉庫人員")]
        [Display(Name = "倉庫人員")]
        WarehouseWorker = 0x08,
        [Description("倉庫主管")]
        [Display(Name = "倉庫主管")]
        WarehouseHead =0x10,
        [Description("倉庫經理")]
        [Display(Name = "倉庫經理")]
        WarehouseManager = 0x20,
        [Description("質檢人員")]
        [Display(Name = "質檢人員")]
        QualityCheckWorker =0x40,
        [Description("質檢主管")]
        [Display(Name = "質檢主管")]
        QualityCheckHead = 0x80,
        [Description("質檢經理")]
        [Display(Name = "質檢經理")]
        QualityCheckManager =0x100,
    }
}

在寫Razor時,使用

<select asp-for="UserType" class="form-control" asp-items="@Html.GetEnumSelectList<UserType>()"></select>

運行時發現報錯:

An unhandled exception occurred while processing the request.
ArgumentException: The type 'ManufacturingExecutionSystemCore.Enums.UserType' is not supported. Type must be an enum that does not have an associated FlagsAttribute. (Parameter 'TEnum')
Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.GetEnumSelectList<TEnum>()

爲記錄Html.GetEnumSelectList<UserType>()不支持FlagsAttribute標識的Enum,特作此記錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章