作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将枚举绑定(bind)到 asp.net 4.0 C# 中的下拉列表
枚举是:
public enum Frequency
{
[Description("Select a frequency")]
None,
[Description("Every Hour/Mintues")]
EveryHourOrMintues,
[Description("Previous Day Data")]
PreviousDayData,
[Description("Once a week")]
OnceaWeek
}
在从下拉列表中选择一个值时,我想获得枚举值作为返回:我这样做是这样的:
Frequency selectedFrequency;
foreach (Frequency f in Enum.GetValues(typeof(Frequency)))
{
if (f.ToString().Equals(this.dropDownListFrequency.SelectedValue))
{
selectedFrequency = f;
break;
}
}
这是可行的,但我猜这绝对是一个糟糕的方法,通过遍历枚举中的每个项目(即使枚举非常小)
如何检索选定的枚举,例如:
Frequency selectedValue = Enum.GetValues(typeof(Frequency)).Cast<Frequency>().Select(f => f.ToString().Equals(this.dropDownListFrequency.SelectedValue));
我知道上面给定的代码存在转换问题。
编辑有关更多信息,这是我将枚举绑定(bind)到下拉列表的方式
var frequencies = Enum.GetValues(typeof(Frequency)).Cast<Frequency>().Select(f => new
{
Text = f.ToDescriptiveTextUsingAttributes(),
Value = f.ToString()
});
this.dropDownListFrequency.DataSource=frequencies ;
this.dropDownListFrequency.DataTextField = "Text";
this.dropDownListFrequency.DataValueField = "Value";
ToDescriptiveTextUsingAttributes() 是一个扩展方法,它返回枚举的 Description 属性的值
最佳答案
如果下拉列表的值是枚举的整数表示(例如 0,1,2...),那么您可以简单地将其转换回枚举:
Frequency f = (Frequency)int.Parse(dropDownListFrequency.SelectedValue);
如果下拉列表的值是枚举的字符串表示形式(例如“None”、“EveryHourOrMintues”...),那么您可以使用 Enum.Parse()
:
Frequency f = (Frequency)Enum.Parse(
typeof(Frequency), dropDownListFrequency.SelectedValue);
关于c# - 从下拉列表中检索选定的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603530/
我是一名优秀的程序员,十分优秀!