加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何使用枚举的MVC Html Helper .DropDownListFo

发布时间:2020-12-16 03:17:58 所属栏目:asp.Net 来源:网络整理
导读:在我的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
在我的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);
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读