You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core视图中显示枚举的DisplayName并支持选择性展示?

解决方案

1. 新增枚举DisplayName扩展方法

先实现一个工具方法,用于读取枚举值对应的Display属性名称:

public static class EnumExtensions
{
    public static string GetDisplayName(this Enum enumValue)
    {
        return enumValue.GetType()
                        .GetMember(enumValue.ToString())
                        .FirstOrDefault()?
                        .GetCustomAttribute<DisplayAttribute>()?
                        .Name ?? enumValue.ToString();
    }
}

2. 修改控制器逻辑

不再直接使用Enum.GetNames,而是遍历枚举所有值,提取每个值的DisplayName和对应枚举值,构建可用于视图的选项集合:

public IActionResult Index()
{
    var smsTypeOptions = Enum.GetValues(typeof(SmsType))
                             .Cast<SmsType>()
                             .Select(t => new SelectListItem
                             {
                                 Text = t.GetDisplayName(),
                                 Value = ((int)t).ToString()
                             });
    ViewBag.SmsType = smsTypeOptions;
    
    return View();
}

注:Value字段可根据需求选择枚举数值或枚举名称,上述示例用的是数值。

3. 视图中渲染下拉选择框

方式一:使用Html辅助方法

@Html.DropDownList("SmsType", (IEnumerable<SelectListItem>)ViewBag.SmsType, "请选择短信类型", new { @class = "form-control" })

第三个参数为默认空选项文本,可根据需求修改或移除。

方式二:使用TagHelper(ASP.NET Core推荐)

<select asp-for="SelectedSmsType" asp-items="@(ViewBag.SmsType as IEnumerable<SelectListItem>)" class="form-control">
    <option value="">请选择短信类型</option>
</select>

使用该方式需确保模型中存在SelectedSmsType属性(类型可为SmsType?或int)。

4. 实现选择性展示枚举项

若需仅展示部分枚举值,可在构建选项集合时添加筛选条件,例如排除Standard项:

var smsTypeOptions = Enum.GetValues(typeof(SmsType))
                         .Cast<SmsType>()
                         .Where(t => t != SmsType.Standard)
                         .Select(t => new SelectListItem
                         {
                             Text = t.GetDisplayName(),
                             Value = ((int)t).ToString()
                         });

也可根据业务逻辑动态筛选,比如从配置读取允许展示的枚举值列表。

内容的提问来源于stack exchange,提问作者rose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:15:12