C# 枚举的DisplayTemplate不适用于某些值

C# 枚举的DisplayTemplate不适用于某些值,c#,asp.net-mvc,enums,asp.net-mvc-5,display-templates,C#,Asp.net Mvc,Enums,Asp.net Mvc 5,Display Templates,我有一个名为Priority的枚举类模型。我有一个用于优先级的编辑器模板和一个用于枚举的显示模板。在编辑器模板中,我创建了一个下拉列表,列出所有可能的优先级值,并在文本旁边显示glyphicon 问题是,在编辑器模板中,对于(e==Model)的情况,行@Html.DisplayFor(Model=>e,“Enum”)将不会调用显示模板,并且该选项只显示图标而不显示文本。调试时,它会通过该行,但不会传递到显示模板。对于其他选项,它运行良好 我的观点和模型如下: Priority.cs: publ

我有一个名为Priority的枚举类模型。我有一个用于优先级的编辑器模板和一个用于枚举的显示模板。在编辑器模板中,我创建了一个下拉列表,列出所有可能的优先级值,并在文本旁边显示glyphicon

问题是,在编辑器模板中,对于
(e==Model)
的情况,行
@Html.DisplayFor(Model=>e,“Enum”)
将不会调用显示模板,并且该选项只显示图标而不显示文本。调试时,它会通过该行,但不会传递到显示模板。对于其他选项,它运行良好

我的观点和模型如下:

Priority.cs:

public enum Priority {
    [Display(Name = "Low Priority")]
    Low = 1,
    [Display(Name = "High Priority")]
    High = 2,
    [Display(Name = "Critical Priority")]
    Critical = 3
}
Enum.cshtml(显示模板):

Priority.cshtml(编辑器模板)

@型号优先级
@foreach(Enum.GetValues(Model.GetType())中的优先级e){
@DisplayFor(model=>e,“Enum”)
}
我首先想到的是缓存。我从页面中删除了对显示模板的其他调用,但它仍然不起作用

@model Enum

@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata)) {
    // Display Enum using same names (from [Display] attributes) as in editors
    string displayName = null;
    var selectList = EnumHelper.GetSelectList(ViewData.ModelMetadata, Model);
    foreach (SelectListItem item in selectList) {
        if (item.Selected) {
            displayName = item.Text ?? item.Value;
        }
    }

// Handle the unexpected case that nothing is selected
if (String.IsNullOrEmpty(displayName)) {
    if (Model == null) {
        displayName = String.Empty;
    }
    else {
        displayName = Model.ToString();
    }
}

@Html.DisplayTextFor(model => displayName)
}
else {
    // This Enum type is not supported.  Fall back to the text.
    @Html.DisplayTextFor(model => model)
}
    @model Priority

<select class="selectpicker" name="@ViewData.TemplateInfo.GetFullHtmlFieldName("")">
    @foreach (Priority e in Enum.GetValues(Model.GetType())) {
        <option value="@e"
                @if (e == Model) {
                    <text>selected</text>
                }
                data-icon="@{
                     switch (e) {
                         case Priority.Low:
                             <text>glyphicon-arrow-down</text>
                             break;
                         case Priority.High:
                             <text>glyphicon-arrow-up</text>
                             break;
                         case Priority.Critical:
                             <text>glyphicon-exclamation-sign</text>
                             break;
                         default:
                             break;
                    }
                }">
            @Html.DisplayFor(model => e, "Enum")
        </option>
    }
</select>