asp.net-mvc - 如何将 MVC Html Helper .DropDownListFor<> 与 Enum 一起使用

标签 asp.net-mvc asp.net-mvc-3 razor html-helper html.dropdownlistfor

在我的 MVC 3 Razor 应用程序中,我有一个带有枚举的模型..

模型示例:

public class EmployeeModel
{
 public enum Title
 {
  Accountant = 111,
  Sales = 222,
  Production = 333 
 }

 [Required]
 public string Name {get; set;}

 [Required]
 public Title JobTitle {get; set;}
}

在我的 View 中,我想使用 Html 助手来构建一个 Html 表单......

查看示例:
@model ..Models.EmployeeModel

@using (Html.BeginForm())
{
 @Html.LabelFor(m => m.Name)
 @Html.TextBoxFor(m => m.Name)
 <br>

 @Html.LabelFor(m => m.JobTitle)
 @Html.DropDownListFor(m => m.JobTitle, ??How do I get Title enum values??)
 <br>

 <input type="submit />
}

我试图实现的 DropDownListFor 的输出如下所示:
注意选项值匹配枚举的初始化值
<select name="JobTitle">
 <option value="-1">Choose a Job Title</option>
 <option value="111">Accountant</option>
 <option value="222">Sales</option>
 <option value="333">Production</option>
</select>

如何让 DropDownListFor<> 助手根据模型的 Title 枚举创建选择/选项元素?

另外,是否可以让 DropDownListFor<> 助手添加一个类似于上面示例中的“选择职位”选项的额外(不是枚举的一部分)?

最佳答案

你可能会得到一个 String[]使用枚举值的名称并从中创建一个下拉列表。在您的 View 模型中,添加一个属性 Titles类型 SelectListItem并将枚举值和名称添加到其中。您可以通过 System.Enum 获取名称和值。类型。

var defaultItem = new SelectListItem();
defaultItem.Value = -1;
defaultItem.Text = "Choose a title";
defaultItem.Selected = true;
model.TitleSelectItems.add(defaultItem);

String[] names = System.Enum.GetNames(typeof(Title));
Int[] values = System.Enum.GetValues(typeof(Title));

for (int i = 0; i<names.Length; i++)
{
    var item = new SelectListItem();
    item.Text = names[i];
    item.Value = values[i];
    model.TitleSelectItems.Add(item);
}

这有点难看,但它会起作用。

关于asp.net-mvc - 如何将 MVC Html Helper .DropDownListFor<> 与 Enum 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6146204/

相关文章:

asp.net-mvc-3 - Ninject 自定义 AuthorizeAttribute 注入(inject)不起作用

javascript - 如何制作每次填充文本框时都会填充的进度条

asp.net-mvc - MVCSiteMapProvider - 最近添加的关键字,现在它们正在填充到 MenuHelper 的链接中

javascript - ASP.NET mcv : How to send javascript array to c# controller

javascript - 客户端验证在 jQuery UI 对话框中不起作用

asp.net-mvc - ASP MVC 3 : Dynamically resolve relative resources in views

asp.net-mvc - 编辑 View 时运行 MVC 项目的问题

asp.net-mvc - ASP.NET MVC 中何时调用 Session_End()?

c# - 没有具有键 'IEnumerable<SelectListItem>' 的 "key"类型的 ViewData 项

java - MVC.NET 的 @Html.Action 方法的 Spring Web 等效项是什么?