2014-04-21 33 views
0

我想用enum来建立一个下拉列表。 我尝试了以下方法,但不知道如何在视图中显示它。我使用MVC frameworkDisplay DropDownList

public enum Condition 
     { 
      And, 
      Or, 
      Not, 
     } 

private List<Condition> userTypes = Enum.GetValues(typeof(Condition)).Cast<Condition>().ToList(); 

     public List<Condition> UserType 
     { 
      get 
      { 
       return userTypes; 
      } 
      set 
      { 
       userTypes = value; 
      } 
     } 

是显示一个简单的下拉列表上面的代码吗? 而我如何通过它来查看显示下拉列表。 谢谢

+0

http://forums.asp.net/t/1787493.aspx?enum+to+drop+down+list – Sajeetharan

回答

2

Action

ViewData["ddl"] = userTypes.Select(t => new SelectListItem { Text = t.ToString(), Value = ((int)t).ToString() }); 

aspx

<%=Html.DropDownList("ddl", ViewData["ddl"] as IEnumerable<SelectListItem>)%> 

休息是正常的。

1

你想返回string列表从属性UserType不是Condition类型。其次属性必须为readonly,因为枚举是恒定的,用户不会改变它。最后不要使用变量,属性本身处理这个。

public List<string> UserType 
{ 
    get 
    { 
     return Enum.GetNames(typeof(Condition)).ToList(); 
    } 
} 
+0

如何将它传递给视图? – Richa

+0

@ RS26对mvc不太了解,但我认为Ashok的答案会帮助你将属性传递给你的.aspx页面。 –

1
  1. 在模型中添加列表,如:

     
    private List conditionList= Enum.GetValues(typeof(Condition)) 
            .Cast() 
            .Select(e => new SelectListItem { Value = ((int)e).ToString(), Text  = e.ToString() }); 
    
  2. ,然后只需添加这对你的看法

     
    @Html.EditorFor(m=>m.Condition,Model.conditionList)  
    

我相信,这将使事情变得更更轻松。