我需要显示一个复选框列表,每个html表格行有3个。
每个复选框的标签和值将来自枚举。
构建它并在webforms中显示它的最佳方法是什么?
我正在考虑使用文字控件,并在htmltable对象中生成控件。
评论
答案 0 :(得分:4)
我会考虑带有数据的装饰器模式。
public enum MyEnum
{
[Description("Display Text")]
SomeEnumValue = 1,
[Description("More Display Text")]
AnotherEnumValue = 2
}
然后你会创建一个获取数据的方法:
public IEnumerable<ListItem> GetListItemsForEnum<EnumType>() where EnumType : struct
{
if (!typeof(EnumType).IsEnum) throw new InvalidOperationException("Generic type argument is not a System.Enum");
var names = Enum.GetNames(typeof(EnumType));
foreach (var name in names)
{
var item = new ListItem();
var fieldInfo = typeof(EnumType).GetField(name);
var attribute = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault(x => x is DescriptionAttribute) as DescriptionAttribute;
if (attribute != null)
{
item.Text = attribute.Description;
item.Value = Enum.Parse(typeof(EnumType), name).ToString();
yield return item;
}
}
}
然后你可以简单地在任何带有描述属性的枚举上调用该方法,并在绑定时使用IEnumerable<ListItem>
。