我从枚举中创建我的选择列表。
[Flags]
public enum Age
{
New_Born = 1,
Toddler = 2,
Preschool = 4,
Kindergarten = 8,
Elementary_School = 16,
Middle_School = 32,
High_School = 64
}
var age = from Age e in Enum.GetValues(typeof(Age))
select new { Id = (int)e, Name = e.ToString().Replace("_", " ") };
我试过了两个:
var ageList = new SelectList(age, "Id", "Name", (int)Model.Child.Age);
或
var ageList = new SelectList(age, "Id", "Name", Model.Child.Age);
@Html.DropDownListFor(m => m.Child.Age, ageList, "Your Child's Age")
除了未选中所选值外,一切正常。
编辑:经过数小时的测试,最后修复它。 chagne Id =(int)e to Id = e。
var age = from Age e in Enum.GetValues(typeof(Age))
select new { Id = e, Name = e.ToString().Replace("_", " ") };
var ageList = new SelectList(age,“Id”,“Name”,Model.Child.Age);
答案 0 :(得分:0)
我刚刚创建了一个类似的示例并解决了您的问题,我相信您的代码存在两个问题:
在您的控制器代码中,您应该有第一个选项,如下所示:
SelectList selectList = new SelectList(items, "Id", "Name", (int)Qualities.Whatever);
在你看来:
<%= this.Html.DropDownListFor(m => m.List.SelectedValue, this.Model.List, "Qualities") %>
想一想,你为什么要两次传递SelectList?您应该传递选定的值,然后传递值列表。
我没有使用Razor视图引擎这一事实无关紧要。
答案 1 :(得分:0)
经过数小时的测试,最后修复它。 chagne Id =(int)e到Id = e。
var age =来自Enum.GetValues中的年龄e(typeof(年龄)) 选择新{Id = e,Name = e.ToString()。替换(“_”,“”)};
var ageList = new SelectList(age,“Id”,“Name”,Model.Child.Age);