0

私はオプションと呼ばれるクラスを用意しています。オプションのために列挙可能なものをたくさん用意しています。これらのうちの1つは、ボールモデルで使用されるサイズの列挙体です。新しいボールを作成するときに、ボールのサイズフィールドをドロップダウンリストとして表示するにはどうすればよいですか?私はエディタテンプレートを作成する必要があると仮定しますが、私はそれがどのように見えるのか分かりません。Enum as DropDownListを.Net MVC Coreに表示する方法

ここではいくつかのサンプルコードです:

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> 

Enumプロパティの値をDropDownListsとして表示するには、どのようにEditorForModelを取得するのですか?

+0

EditorForModelは独自のドロップダウンリストを作成しません。これはあなたの答えを見つけるのに役立ちますhttp://stackoverflow.com/questions/17760271/html-editorformodel-dropdown and http://stackoverflow.com/questions/972307/can-you-loop-through-all-enum-値 –

答えて

0

私はそれが示唆するように、私はヘルパーを作成していないが、私は私のサイズ列挙のためEditorTemplateを作成するために、ヘルパーから同じ原則を使用し、このsource

からの助けのビットでそれを考え出しました。ここでは次のようになります。私は私のBall.cshtmlで@Html.EditorForModel()を呼び出すとき

@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) 

Sizes.cshtmlさて、それは、このエディタのテンプレートを参照し、列挙型のすべてのオプションを持つドロップダウンを作成します。

関連する問題