关于asp.net mvc 3:枚举查看DropDown MVC3

Enum to View DropDown MVC3

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do you create a dropdownlist from an enum in ASP.NET MVC?

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

我正在尝试将枚举的所有选项都放到视图的下拉列表中。

这是我的枚举/类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;
    }
}

我的视图如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@model ColoringBook.Drawing


@{
Title ="Create";
}

Create

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


   
        @Html.LabelFor(model => model.Color)
   
   
        //not sure how to fill
        //@Html.DropDownList("Color",new SelectList())

   
 <p>

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

我的控制器将具有提供和接收数据的操作结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
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);
     }

我不担心文章(因此在从视图接收数据时,在复制创建代码方面缺乏努力),只关注get。从下拉列表中选择视图中的正确代码。

有人建议我不要使用VIEWBAG。除此之外,我愿意接受任何好的建议。


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

1
2
3
4
5
@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]")