Enum Dropdown List For 是一种在用户界面中显示枚举值的下拉列表控件。它允许用户从预定义的选项中选择一个值。description
和 shortname
字段通常用于提供更详细的选项描述和简短的标识符。
假设我们有一个 Status
枚举,包含 Active
和 Inactive
两个状态:
public enum Status
{
[Description("Active")]
Active,
[Description("Inactive")]
Inactive
}
我们可以使用反射来动态生成下拉列表的选项:
public List<SelectListItem> GetStatusOptions()
{
var options = new List<SelectListItem>();
foreach (Status status in Enum.GetValues(typeof(Status)))
{
var fieldInfo = status.GetType().GetField(status.ToString());
var attributes = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
if (attributes != null && attributes.Length > 0)
{
options.Add(new SelectListItem
{
Value = status.ToString(),
Text = attributes[0].Description
});
}
}
return options;
}
问题:下拉列表没有正确显示枚举值的描述。
原因:
Description
属性。解决方法:
Description
属性。确保枚举值有 Description
属性:
public enum Status
{
[Description("Active")]
Active,
[Description("Inactive")]
Inactive
}
修正反射代码:
public List<SelectListItem> GetStatusOptions()
{
var options = new List<SelectListItem>();
foreach (Status status in Enum.GetValues(typeof(Status)))
{
var fieldInfo = status.GetType().GetField(status.ToString());
var attributes = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
if (attributes != null && attributes.Length > 0)
{
options.Add(new SelectListItem
{
Value = status.ToString(),
Text = attributes[0].Description
});
}
else
{
options.Add(new SelectListItem
{
Value = status.ToString(),
Text = status.ToString()
});
}
}
return options;
}
通过这种方式,可以确保下拉列表正确显示枚举值的描述,并且在缺少描述时显示枚举值本身。
领取专属 10元无门槛券
手把手带您无忧上云