c# - 如何将 dropDownlist 映射到 C# 中的枚举?

标签 c# asp.net

我已经将下拉列表绑定(bind)到星期几的枚举,如下所示:

    private void BindDayOfWeek()
    {
        this.ddlDayOfWeek.DataSource = GetWeekDays();
        this.ddlDayOfWeek.DataBind();
    }

    private List<DayOfWeek> GetWeekDays()
    {
        return Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>().ToList();
    }

现在我想读取枚举 DayOfWeek 中所选工作日(从下拉列表中)的 int 值,即如果我从下拉列表中选择“Sunday”,我应该能够选择“Sunday”的 int 值枚举 DaysOfWeek(不是 ddlDayOfWeek.selectedValue 或 SelectedIndex)

如果没有开关我怎么能做到这一点(我认为这是一种方式)?

最佳答案

由于 SelectedValue 是一个字符串,您需要先将其解析为 int。然后你只需要将它转换为 DayOfWeek:

if(ddlDayOfWeek.SelectedIndex >= 0)
{
    int selectedDay = int.Parse(ddlDayOfWeek.SelectedValue);
    DayOfWeek day = (DayOfWeek) selectedDay;
}

如果您不分开 DataTextFieldDataValueField(您应该这样做),您可以解析显示的 string "Sunday"在 DropDownListDayOfWeek 中,通过 Enum.Parse:

DayOfWeek selectedDay = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), ddlDayOfWeek.SelectedValue);

编辑:这是一种从枚举中设置DataTextField/DataValueField的方法:

var weekDays = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>()
    .Select(dow => new { Value = (int)dow, Text = dow.ToString() })
    .ToList();
ddlDayOfWeek.DataSource = weekDays;
ddlDayOfWeek.DataTextField = "Text";
ddlDayOfWeek.DataValueField = "Value";
ddlDayOfWeek.DataBind();

关于c# - 如何将 dropDownlist 映射到 C# 中的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399124/

相关文章:

c# - 使用日志记录服务时,对象引用未设置为对象的实例

asp.net - 从 C# 代码发送邮件时出现电子邮件错误

c# - Linq 包含来自表列表的查询

c# - 如何在执行操作之前检查所有方法是否为真

c# - 哪种 C# 容器对于仅存在一个操作的资源效率最高?

c# - 点击 Div 刷新页面

java - 从 C# 获取/设置到 Java

c# - 找不到类型或命名空间名称 'function'?

asp.net - 最佳 ASP.net 所见即所得

asp.net - @outputCache 指令在 ASP.NET 中有何用途?