0

我有一個名爲Options的類,其中我爲不同的選項保留了一堆枚舉類型。其中之一就是我的Ball模型中使用的Sizes enumerable。如何在創建新球時將球的「大小」字段顯示爲下拉列表?我想我需要編輯一個編輯器模板,但我不知道應該看起來像什麼。如何在.Net MVC Core中顯示Enum爲DropDownList

下面是一些示例代碼:

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?

+0

EditorForModel不會自行創建下拉列表。這可能會幫助你找到你的答案http://stackoverflow.com/questions/17760271/html-editorformodel-dropdown和http://stackoverflow.com/questions/972307/can-you-loop-through-all-enum-值 –

回答

0

我想通了有一點幫助從這個source

像它暗示,但我用從助手同樣的原理來創建我的尺寸枚舉一個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(),它引用這個編輯器模板,創建與枚舉所有選項的下拉菜單。

相關問題