Jed*_*Jed 5 asp.net-mvc html-helper html.dropdownlistfor razor asp.net-mvc-3
在我的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;}
}
Run Code Online (Sandbox Code Playgroud)
在我的视图中,我想使用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 />
}
Run Code Online (Sandbox Code Playgroud)
我试图实现的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>
Run Code Online (Sandbox Code Playgroud)
如何让DropDownListFor <>帮助器根据模型的标题枚举创建一个select/option元素?
此外,是否可以让DropDownListFor <>助手添加额外的(不是枚举的一部分)类似于上面示例中的"选择作业标题"选项?
您可能会获得String[]带有枚举值名称的 a 并从中创建一个下拉列表。在视图模型中,添加Titlestype属性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);
}
Run Code Online (Sandbox Code Playgroud)
这有点丑陋,但它会起作用。
| 归档时间: |
|
| 查看次数: |
26830 次 |
| 最近记录: |