我为个人标题定义了nullable
enum
,并在个人模型中使用。
public enum Titles { Mr=0, Mrs=1, Miss=2, Dr=3 }
[Required(ErrorMessage="Please supply the title.")]
[Display(Name = "Title")]
public Titles Title { get; set; }
使用HTML Helper
将此属性添加到创建或编辑视图中时@Html.EnumDropDownListFor(model => model.Title)
控件按预期呈现其中的枚举值。
但是,当我选择修改现有人时,标题enum
不会显示当前标题。它在DropDownList
的顶部显示一个空条目。
但是,如果我删除nullable
,则会始终显示enum
中的第一项。
我是如何让DropDownList
为我正在编辑的人显示正确选择的enum
项目的任何想法?
非常感谢,
杰森。
答案 0 :(得分:8)
我刚做了一个简单的测试。
你提到你有一个可以为空的枚举,但为此你需要public Titles? Title { get; set; }
并使用此模型:
public class TestViewModel
{
[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "Please supply the title.")]
[System.ComponentModel.DataAnnotations.Display(Name = "Title")]
public Title? Title { get; set; }
}
public enum Title
{
Mr = 0,
Mrs = 1,
Miss = 2,
Dr = 3
}
使用此ActionResult
public ActionResult Test()
{
var model = new List<Models.TestViewModel>();
model.Add(new TestViewModel() { Title = Title.Miss });
model.Add(new TestViewModel() { Title = Title.Mrs });
model.Add(new TestViewModel() { Title = null });
return View(model);
}
并使用简单的HTML
@model List<Models.TestViewModel>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
@for (int i = 1; i <= Model.Count; i++)
{
var title = Model[i-1];
<div>
<h2>Model @i</h2>
@Html.LabelFor(x => title.Title)
@Html.EnumDropDownListFor(x => title.Title)
@Html.EditorFor(x => title.Title)
</div>
}
</body>
</html>
我得到了这个结果:
女巫正是除了......你错过了我的例子吗?
答案 1 :(得分:5)
尝试将Title属性命名为其他内容,Title似乎是某种保留关键字。