How to create a drop-down list from an enumeration in ASP.NET MVC?

I am trying to use the Html.DropDownList extension method, but cannot figure out how to use it with an enumeration.

My classes are:

namespace Support_A_Tree.Models { public enum Countries { Belgium, Netherlands, France, United_Kingdom, Other } [MetadataType(typeof(SupporterMetaData))] public partial class Person { public string Name { get; set; } public Countries Country { get; set; } public List<SelectListItem> allCountries() { List<SelectListItem> choices = new List<SelectListItem>(); foreach (String c in Enum.GetValues(typeof(Countries))) { choices.Add(new SelectListItem() { Text = c , Value = bool.TrueString }); } return choices; } } public class SupporterMetaData { public string Name { get; set; } [Required] public Countries Country { get; set; } } } 

In my VIEW, I tried to get all the countries, but it looks like I'm doing it wrong.

 @using (Html.BeginForm()) { <div> <p style = "color: red;">@ViewBag.Message</p> </div> <div> <h2> You want to ... </h2> <p>Plant trees</p> @Html.CheckBoxSimple("support", new { @value = "Plant trees" }) <p>Support us financial</p> @Html.CheckBoxSimple("support", new { @value = "Support financial" }) </div> <input type="submit" value="Continue "> } 
+7
asp.net-mvc
source share
1 answer

In your view, you can use SelectExtensions.EnumDropDownListFor :

eg:

 @Html.EnumDropDownListFor(model => model.Countries) 

given that the @model view has a property called Countries , which is an enum type.

If you want to show the default text in the drop-down list (for example: "Select country"). Take a look at the following question and answer.

Html.EnumDropdownListFor: display default text

+8
source share

All Articles