在我的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 举报,一经查实,本站将立刻删除。