2016-09-14 106 views
0

我正在使用ASP.NET MVC 5實體框架,在我的視圖中我有一個下拉菜單,我正在嘗試使用枚舉來填充下拉菜單。這是我在我的課有:Enum.Parse不能隱式地將類型'對象'轉換爲存在顯式轉換(你缺少一個轉換嗎?)

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

+0

您是否嘗試過錯誤提示? '(你是否錯過了演員?)' – RafaelC

+0

錯誤信息實際上有點有用的幾次之一:) – KSib

回答

5

Enum.Parse返回對象(它不是通用的),所以你需要明確地投你的返回值。使用方法:

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

我想知道他們爲什麼設計'Enum.Parse'這樣工作。看起來非常多餘,不得不施放... – KSib

+1

因爲.NET框架第一次寫入時,沒有像泛型那樣的東西。因此唯一可能的返回類型是'object'。 – Chris

+1

你會想,在所有這些年後,儘管他們會添加一個'Enum.Parse (object obj)' – KSib

相關問題