如何在.Net MVC Core

时间:2017-05-04 23:05:32

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

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

以下是一些示例代码:

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将枚举属性显示为具有Enum可能值的DropDownLists?

1 个答案:

答案 0 :(得分:0)

我在这个source

的帮助下找到了答案

我没有像它建议的那样创建一个帮助器,但是我使用了帮助器中的相同原理来为我的Size枚举创建一个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()时,它会引用此编辑器模板并创建包含枚举中所有选项的下拉列表。