枚举查看DropDown MVC3

时间:2011-03-13 06:53:03

标签: asp.net-mvc-3

  

可能重复:
  How do you create a dropdownlist from an enum in ASP.NET MVC?

我知道有几个帖子涉及MVC3的下拉。我找不到能解决我具体问题的那个。

我试图将我的Enum的所有选项放入View中的下拉列表中。

这是我的Enum / Class:

namespace ColoringBook 
public enum Colors
{
    Red = 0,
    Blue = 1,
    Green = 2,
    Yellow = 3
}

public class Drawing
{
    private Colors myColor;

    public Colors MyColor
    {
        get { return this.myColor; }
        set { this.myColor= value; }
    }

    public Drawing(Colors color)
    {
        this.myColor = color;
    }
}

我的观点如下:

@model ColoringBook.Drawing


@{
Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm()) 
{
@Html.ValidationSummary(true)
<fieldset>
    <legend>Color</legend>


    <div class="editor-label">
        @Html.LabelFor(model => model.Color)
    </div>
    <div class="editor-field">
        //not sure how to fill
        //@Html.DropDownList("Color",new SelectList())

    </div>
 <p>
        <input type="submit" value="Create" />
 </p>
</fieldset>
}

我的控制器会有动作结果来提供和接收数据:

public class ColorController: Controller
{
     public ActionResult Create()
     {
        return View();
     }

     [HttpPost]
     public ActionResult Create(Colors dropdownColor)
     {
        //do some work and redirect to another View
        return View(dropdownColor); 
     }

我并不担心Post(因此在从View接收数据时没有再创建代码的努力),只是Get。也是从下拉列表中查看的正确代码。

我被告知不要使用ViewBag。除此之外,我愿意接受任何好的建议。

1 个答案:

答案 0 :(得分:7)

我在枚举下拉框中使用以下代码:

@Html.DropDownListFor(model => model.Color, Enum.GetValues(typeof(ColoringBook.Colors)).Cast<ColoringBook.Colors>().Select(v => new SelectListItem
               {
                   Text = v.ToString().Replace("_", " "),
                   Value = ((int)v).ToString()
               }), "[Select]")