2011-03-13 46 views
4

可能重复:
How do you create a dropdownlist from an enum in ASP.NET MVC?枚举来查看下拉MVC3

我知道有几个职位,在MVC3下拉处理。我没有找到一个能解决我的具体问题的方法。

我想让我的Enum的所有选项放入视图中的下拉列表中。

这里是我的枚举/类:

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); 
    } 

我并不担心这个帖子(因此在从View接收数据时再现创建代码时缺乏努力),只是第e获取。从下拉菜单中查看正确的代码。

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

回答

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]") 
+0

做了你在编辑操作的问题吗?在编辑操作中,在下拉菜单中未选择当前值 – Silagy 2015-03-24 14:58:28