【问题标题】:How to display Enum as DropDownList in .Net MVC Core如何在 .Net MVC Core 中将枚举显示为 DropDownList
【发布时间】:2017-05-04 23:05:32
【问题描述】:

我有一个名为 Options 的类,我在其中为不同的选项保留了一堆可枚举项。其中之一是在我的 Ball 模型中使用的 Sizes 可枚举。创建新球时,如何让我的球的尺寸字段显示为下拉列表?我假设我需要制作一个编辑器模板,但我不知道它应该是什么样子。

下面是一些示例代码:

Options.cs

public class Options
{
    public enum Sizes
    {
        Small,
        Medium,
        Large
    };

    public enum Material
    {
        Rubber,
        Plastic,
        Metal
    };
}

Ball.cs

public class Ball
{
    public string Name { get; set; }
    public Options.Sizes Size { get; set; }
    public Options.Material Material { get; set; }
}

Index.cshtml @model WebApplication.Models.Ball

<form asp-action="Create" asp-controller="Ball">
    @Html.EditorForModel()
    <input type="submit" value="Submit"/>
</form>

如何让 EditorForModel 将枚举属性显示为 DropDownLists 以及枚举的可能值?

【问题讨论】:

标签: asp.net-mvc enums asp.net-core html.dropdownlistfor editorformodel


【解决方案1】:

source 的帮助下我想通了

我并没有像它建议的那样创建一个助手,但我使用助手中的相同原则为我的 Sizes 枚举创建了一个 EditorTemplate。这是它的样子:

Sizes.cshtml

@model Options.Sizes 

@{ 
    var values = Enum.GetValues(typeof(Options.Sizes)).Cast<Options.Sizes>();

    IEnumerable<SelectListItem> items =
        from value in values
        select new SelectListItem
        {
            Text = value.ToString(),
            Value = value.ToString(),
            Selected = (value.Equals(Options.Sizes.ATX_Full))
        };
}

@Html.DropDownList("Size", items)

现在,当我在 Ball.cshtml 中调用 @Html.EditorForModel() 时,它会引用此编辑器模板并创建一个包含枚举中所有选项的下拉列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多