如何从ASP.NET MVC中的枚举创建下拉列表?

How to create a dropdownlist from an enum in ASP.NET MVC?

本问题已经有最佳答案,请猛点这里访问。

我正在尝试使用html.dropdownlist扩展方法,但无法确定如何将其与枚举一起使用。

我的班级:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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; }
    }
}

在我看来,我试图争取到所有国家,但似乎我做错了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@using (Html.BeginForm())
{
   
        <p style ="color: red;">@ViewBag.Message
</p>
   

   
         You want to ...
        <p>
Plant trees
</p>
        @Html.CheckBoxSimple("support", new { @value ="Plant trees" })

        <p>
Support us financial
</p>
        @Html.CheckBoxSimple("support", new { @value ="Support financial" })
   

    <input type="submit" value="Continue">
}


在您的视图中,您可以使用SelectExtensions.EnumDropDownListfor:

例如:

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

考虑到视图的@model有一个名为Countries的属性,它是enum类型。

如果要在下拉列表中显示默认文本(如:"选择国家")。看看下面的问题和答案。

html.enumDropDownListfor:显示默认文本