2014-04-21 66 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)  
    

我相信,這將使事情變得更更輕鬆。