DropDownListFor枚举表达式,所选项目未选择

时间:2014-12-12 21:07:27

标签: c# asp.net-mvc razor enums dropdownlistfor

我做了很多研究,发现有时候对象的名称会导致问题,等等。但是我(至少我认为)确定这不是问题。我看到人们遇到的大多数问题都是尝试将枚举转换为下拉列表,这是我不需要的。

我正在使用:

public enum PriorityTypeEnum
{
    Low = 1,
    Medium = 2,
    High = 3,
}

@Html.DropDownListFor(m => m.CurrentTicket.Priority, Model.PriorityList.SetSelectedItem((int)Model.CurrentTicket.Priority))

获取所有优先级的列表,并将所选项目设置为CurrenTicket.Priority。

现在,返回的列表本身很好。应该选择的项目,但DropDownListFor中没有选择任何内容。在进行调试后,如果我将优先级的类型从枚举(PriorityTypeEnum)更改为int,则选择正确的类型。正如你所知,当我有一个包含值的枚举时,这真的很烦人。

我的问题是如何正确选择并仍然使用枚举?

我不知道我在这里是否遗漏了一些非常简单的东西。我一直在寻找这种方式。

1 个答案:

答案 0 :(得分:0)

您是否尝试将SelectListItem的值设置为Model.CurrentTicket.Priority.ToString()而不是转换为int

您的新选择列表将是:

@Html.DropDownListFor(m => m.CurrentTicket.Priority, Model.PriorityList.Select(enum =>
{
    Text = enum.ToString(),
    Value = enum.ToString()   
})

然后在控制器中,您可以将model.CurrentTicket.Priority属性设置为要选择的所需值