c# - Enum.Parse 无法将类型 'object' 隐式转换为存在显式转换(是否缺少强制转换?)

标签 c# asp.net enums

我正在使用 ASP.NET MVC 5 Entity Framework 。在我的 View 中,我有一个下拉菜单,我想做的是使用枚举来填充下拉菜单。这是我在类里面得到的:

    public enum occupancyTimelineTypes : int
    {
        TwelveMonths = 12,
        FourteenMonths = 14,
        SixteenMonths = 16,
        EighteenMonths = 18
    }

还有这个:

        [DisplayName("Occupancy Timeline")]
        [Required]
        public string occupancyTimeline { get; set; }

        public occupancyTimelineTypes occupancyTimelineType
        {
            get
            {
                return Enum.Parse(typeof(occupancyTimelineTypes), occupancyTimeline);
            }
        }

我的问题是,我收到一个错误,我不知道如何修复:

Cannot implicitly convert type 'object' to An explicit conversion exists (are you missing a cast?)

我正在像这样填充我的下拉菜单:

@Html.DropDownListFor(model => model.occupancyTimeline,Model.occupancyTimelineType.ToSelectList());

这是我的ToSelectList() 方法

    public static class MyExtensions
    {
        public static SelectList ToSelectList(this occupancyTimelineTypes enumObj)
        {
            var values = from occupancyTimeline e in Enum.GetValues(typeof(occupancyTimeline))
                         select new { Id = e, Name = string.Format("{0} Months", Convert.ToInt32(e)) };
            return new SelectList(values, "Id", "Name", enumObj);
        }
    }

我不能也不会使用 Html.EnumDropDownListFor(),因为出现了太多的错误,而修复这些错误是一场噩梦。

这必须是 @Html.DropDownListFor

最佳答案

Enum.Parse 返回对象(它不是通用的)所以你需要显式地转换你的返回值。使用:

return (occupancyTimelineTypes)Enum.Parse(typeof(occupancyTimelineTypes), occupancyTimeline);

关于c# - Enum.Parse 无法将类型 'object' 隐式转换为存在显式转换(是否缺少强制转换?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39496737/

相关文章:

asp.net - 如何将 oracle 数据库与 asp.net web 应用程序集成?

java - 在 ibatis 上映射枚举

Java泛型类型

c# - 获取或设置访问器预期的枚举

c# - 将对象集合连接成逗号分隔的字符串

c# - 在 NUnit 测试中处理 MessageBox

C# XNA 生成 MIDI

c# - WPF 功能区 : Maximized window going off screen

javascript - { myParameter : 77 } and { 'myParameter' : 77 } 之间的 JSON 差异

c# - 在 HTML 中显示 gnu diff