asp.net mvc3,为什么我的下拉列表没有被选中?

时间:2012-03-15 10:59:43

标签: asp.net-mvc-3 drop-down-menu html.dropdownlistfor

我从枚举中创建我的选择列表。

[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);

2 个答案:

答案 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);