Asp.net mvc 如何在.NETMVC核心中将枚举显示为DropDownList

Asp.net mvc 如何在.NETMVC核心中将枚举显示为DropDownList,asp.net-mvc,enums,asp.net-core,html.dropdownlistfor,editorformodel,Asp.net Mvc,Enums,Asp.net Core,Html.dropdownlistfor,Editorformodel,我有一个名为Options的类,在这个类中,我为不同的选项保留了一堆枚举。其中一个是在我的球模型中使用的可枚举大小。创建新球时,如何使球的大小字段显示为下拉列表?我想我需要制作一个编辑器模板,但我不知道它应该是什么样子 下面是一些示例代码: 选项.cs public class Options { public enum Sizes { Small, Medium, Large }; public enum Mat

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

下面是一些示例代码:

选项.cs

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

    public enum Material
    {
        Rubber,
        Plastic,
        Metal
    };
}
public class Ball
{
    public string Name { get; set; }
    public Options.Sizes Size { get; set; }
    public Options.Material Material { get; set; }
}
Ball.cs

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

    public enum Material
    {
        Rubber,
        Plastic,
        Metal
    };
}
public class Ball
{
    public string Name { get; set; }
    public Options.Sizes Size { get; set; }
    public Options.Material Material { get; set; }
}
Index.cshtml @模型WebApplication.Models.Ball

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

@Html.EditorForModel()

如何让EditorForModel将枚举属性显示为带有枚举可能值的DropDownList?

我从中得到了一些帮助

我没有像它所建议的那样创建帮助器,但我使用了帮助器中的相同原理为我的大小枚举创建了EditorTemplate。下面是它的样子:

size.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)
@型号选项。尺寸
@{ 
var values=Enum.GetValues(typeof(Options.size)).Cast();
数不清的项目=
从价值到价值
选择新的SelectListItem
{
Text=value.ToString(),
Value=Value.ToString(),
选定=(value.Equals(Options.size.ATX_Full))
};
}
@Html.DropDownList(“大小”,项目)

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

EditorForModel不会自己创建下拉列表。这可能会帮助您找到答案并