可能重复:
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。除此之外,我愿意接受任何好的建议。
答案 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]")