Как создать выпадающий список из перечисления в ASP.NET MVC?

Я пытаюсь использовать метод расширения Html.DropDownList, но не могу понять, как использовать его с перечислением.

Мои классы:

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; }
    }
}

В моем VIEW я пытался получить все страны, но похоже, что я делаю это неправильно.

@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
27 апр. '16 в 18:13
источник поделиться
1 ответ

В вашем представлении вы можете использовать SelectExtensions.EnumDropDownListFor:

например:

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

учитывая, что @model представления имеет свойство с именем Countries, которое является типом enum.

Если вы хотите показать текст по умолчанию в раскрывающемся списке (например: "Выбрать страну" ). Взгляните на следующий вопрос и ответ.

Html.EnumDropdownListFor: отображение текста по умолчанию

+8
27 апр. '16 в 18:18
источник

Посмотрите другие вопросы по меткам или Задайте вопрос