微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 如何使用枚举的MVC Html Helper .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;}
}

在我的视图中,我想使用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<>帮助器根据模型的标题枚举创建一个select / option元素?

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

解决方法

你可能会得到一个带有枚举值名称的String []并从中创建一个下拉列表.在视图模型中,添加属性类型为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);
}

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐