2012-03-15 53 views
0

我从枚举创建我的选择列表。asp.net mvc3,为什么我的dropdownlist没有被选中?

[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

出于好奇,为什么'年龄'枚举定义为'Flags'枚举?你期望一个孩子能够同时在“幼儿”和“幼儿园”(例如)? – Oded 2012-03-15 11:02:54

+1

我们推荐儿童书和应用程序,有些书可以适合中学和高中的孩子。 – qinking126 2012-03-15 11:31:51

+0

我假设你的Model.Child.Age有一些价值,对吧? – 2012-03-15 14:47:47

回答

0

经过几个小时的测试,终于修好了。 chagne Id =(int)e到Id = e。

var age = from Enum.GetValues中的Age e(typeof(Age)) select new {Id = e,Name = e.ToString()。Replace(“_”,“”)};

var ageList = new SelectList(age,“Id”,“Name”,Model.Child.Age);

0

我刚刚创建了一个类似的例子,并制定了你的问题,我相信你有两个问题与您的代码:

在控制器代码,你应该有你的第一个选项,如:

SelectList selectList = new SelectList(items, "Id", "Name", (int)Qualities.Whatever); 

而且在你看来:

<%= this.Html.DropDownListFor(m => m.List.SelectedValue, this.Model.List, "Qualities") %> 

想想看,为什么你会通过的SelectList两次?您应该传递选定的值,然后传递值的列表。

事实上,我没有使用Razor视图引擎是无关紧要的。

+0

感谢您的帮助,那没有修复它。但我设法修复它。我所要做的就是删除(int) – qinking126 2012-03-16 00:30:44

+0

我觉得很奇怪。但无论如何,你能否用你的代码回答你自己的问题,并将其标记为正确的?这将帮助我找到另一种解决问题的方法和其他提出问题的人。 – 2012-03-16 10:42:47

相关问题