MVC3 razor view dropdownlist from Enum

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • GoldenKing
    New Member
    • Apr 2012
    • 1

    MVC3 razor view dropdownlist from Enum

    I am filling my dropdownlist with items from Enum.How can I get the index of enum items to dropdown list ?

    Here is my Enum
    Code:
    public enum Colors{ red,blue,green,yellow,orange,white,black,Teal,Custom }
    Here is my dropdownlist
    Code:
     @Html.DropDownList("SelectedColourId", Model.ColourList, "(Select one Color)")
    Here is my ViewModel
    Code:
     myPageViewModel:BasicViewModel
        {
     .....
         public IEnumerable<SelectListItem> ColourList{ get; set; }
    .........
        }
    Here is how I get data from Enum
    Code:
    myPageViewModel.ColourList = Enum.GetNames(typeof(Colors))
        .Select(c => new SelectListItem() { Text = c, Value = c })
        .ToArray();
    Here I am able to populate my dropdownlist with colors

    Code:
    <select id="SelectedColourId" name="SelectedColourId"><option value="">(Select one Color)</option>
    <option value="red">red</option>
    <option value="Blue">Blue</option>
    <option value="Green">Green</option>
    <option value="Yellow">Yellow</option>
    --------
    --------
    </select>

    But I need

    Code:
    <select id="SelectedColourId" name="SelectedColourId"><option value="0">(Select one Color)</option>
    <option value="1">red</option>
    <option value="2">Blue</option>
    <option value="3">Green</option>
    <option value="4">Yellow</option>
    --------
    --------
    </select>
  • RhysW
    New Member
    • Mar 2012
    • 70

    #2
    in your enumeration you're setting both text and value to c, this could be the reason why the text and the value are the same

    Comment

    • maulymodi
      New Member
      • Oct 2013
      • 1

      #3
      use the following code for enum drop down boxes:
      Code:
         public enum UserStatus
              {
                  New = 1,
                  Unverified = 2,
                  Active = 3,
                  Inactive = 4
              }
      View:

      Code:
       @Html.DropDownListFor(model => model.Status, Enum.GetValues(typeof(Enum.UserStatus)).Cast<Enum.UserStatus>().Select(v => new SelectListItem
                                   {
                                       Text = v.ToString().Replace("_", " "),
                                       Value = ((int)v).ToString()
                                   }), "Select One")

      Comment

      Working...