如果在模型中声明了Enum.GetValues(typeof())的枚举值,为什么不识别它们?

时间:2019-05-20 10:44:05

标签: c# asp.net-mvc enums model

我想在MVC中使用枚举填充带有性别值的下拉列表,但是Enum.GetValues(typeof(...)不返回值。这是.cshtml部分:

    <div class="form-group">
        @Html.LabelFor(m => m.parGender, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.DropDownListFor(m => m.parGender, new SelectList(Enum.GetValues(typeof(Gender))), new { @class = "form-control" })
        </div>
    </div>

这是此模型:

        [Required(ErrorMessage = "Select your gender!")]
        [Display(Name = "Gender:")]
        public Gender parGender { get; set; }

        public enum Gender
        {
            Male,
            Female
        }

我为此想念什么?

2 个答案:

答案 0 :(得分:0)

您需要将结果转换为所需的实际数组类型

(Gender[])Enum.GetValues(typeof(Gender))

答案 1 :(得分:0)

您将不得不对其进行强制转换,然后可能选择正确的类型-我将其用于Kendo Dropdowns,不确定是否会完全相同:

Enum.GetValues(typeof(Gender)).Cast<Gender>().Select(at =>
    new SelectListItem
    {
        Text = at.ToString(),
        Value = ((int)at).ToString()
    }
))