Asp.net mvc 使用值为-1的枚举填充DropDownList,并将其放在第一个位置
我使用的是Asp.net mvc 使用值为-1的枚举填充DropDownList,并将其放在第一个位置,asp.net-mvc,asp.net-mvc-3,enums,html.dropdownlistfor,dropdownlistfor,Asp.net Mvc,Asp.net Mvc 3,Enums,Html.dropdownlistfor,Dropdownlistfor,我使用的是ASP.NET MVC3,我试图用Enum填充DropDownList 我的问题是枚举从-1开始,并且DropDownList已正确填充,但第一项(无论哪个项具有-1值)始终是我的DropDownList的最后一项;然而,我需要它在第一个位置 这是我的.cshtml @Html.DropDownListFor(m => m.MyEnumMax, new SelectList(Enum.GetValues(typeof(MyEnum))), new { @id = "myId",
ASP.NET MVC3
,我试图用Enum
填充DropDownList
我的问题是枚举从-1
开始,并且DropDownList
已正确填充,但第一项(无论哪个项具有-1
值)始终是我的DropDownList
的最后一项;然而,我需要它在第一个位置
这是我的.cshtml
@Html.DropDownListFor(m => m.MyEnumMax, new SelectList(Enum.GetValues(typeof(MyEnum))), new { @id = "myId", @class = "myClass" })
这里,MyEnumMax
是一个表示MyEnum
成员的字符串属性(也许这就是问题所在?但是,拥有这个字符串属性确实对我在项目中的其他地方有所帮助)
枚举看起来就像
public enum MyEnum
{
Undefined = -1,
Member1,
Member 2
}
因此,在我看来,我的ddl lloks如下:
- 成员1
- 成员2
- 未定义
- 未定义
- 成员1
- 成员2
OrderBy(x=>x.Value)
,但它不在乎,仍然在最后一个位置显示Undefined。
任何关于代码示例的帮助()都值得赞赏您只需按其int值对Enum进行排序 代码:
@Html.DropDownListFor(m => m.TestEnumValue,Enum.GetValues(typeof(MyEnum))
.Cast<MyEnum>()
.OrderBy(e => (int)e)
.Select(e => new SelectListItem
{
Text = e.ToString(),
Value = ((int)e).ToString()
} ))
@Html.DropDownListFor(m=>m.TestEnumValue,Enum.GetValues(typeof(MyEnum))
.Cast()
.OrderBy(e=>(int)e)
.选择(e=>new SelectListItem
{
Text=e.ToString(),
Value=((int)e).ToString()
} ))
您还需要强制转换GetValues以获得键入的版本:GetValues(typeof(MyEnum))。强制转换
结果: