2017-04-19 208 views
-1

事先我很抱歉,如果我問一些明顯的東西。我正在從常規的asp.net編程切換到MVC和從VB到C#。這很好,但我還有很多東西要學。不能隱式轉換類型system.collections.generic.list

我收到以下錯誤

無法隱式轉換類型system.collections.generic.list < project.models.state>到system.collections.generic.list < project.state>。隱式轉換存在(是否缺少強制轉換?)

這是我在我的控制器

public ActionResult CityForm() 
    { 

     var states= _context.Departamentos.ToList(); 
     var viewModel = new CityFormViewModel 
     { 
      City= new City(), 
      States= states 
     }; 
     return View(); 
    } 

我的視圖模型看起來如下

public IEnumerable<State> States{ get; set; } 

    public City City{ get; set; } 

我已經看着其他有類似錯誤的帖子,但看起來原因與我所擁有的不同。我之前在不同的應用程序中使用了這種方法,並且它運行良好,我在這一方面做的不同之處在於我添加了一個ADO.NET實體數據模型,以便與Telerik控件一起使用。

我也注意到,在我的其他應用程序時,我徘徊在我的控制,我得到了以下信息變量(**之間就是我將鼠標懸停):

States = **states** 
(local variable)List<State> states 

但如果我在那裏,我得到錯誤的應用程序在同一個地方徘徊,我得到一個不同的消息

States = **states** 
(local variable)List<Models.State> states 

,你可以看到的是國家的前綴與模型。

我真的很感謝任何幫助,我可以得到。謝謝。

+2

'project.models.state'不是'project.state'(他們是在不同的組件)。您的視圖模型屬性需要爲'public IEnumerable States {get;組; }' - 與你的查詢返回一樣(並停止使用'var'!) –

+1

我在他如何使用var時看不到任何問題。如果他沒有使用var,他會得到相同的編譯器錯誤。因爲他使用var,他必須修復更少的代碼。 – bit2know

+0

@ bit2know我認爲'var'的問題在這種情況下很明顯:它使得查看類型不匹配更加困難。 –

回答

0

您在不同位置具有相同的班級名稱。如果你想分配值,請不要介意他們需要使用相同的類型。

你的情況,你必須選擇要麼IEnumerable<project.state>IEnumerable<project.models.state>不僅沒有分配給project.stateproject.models.state

+0

真棒,做到了,我真的很感謝你的幫助。我 – Stendor

+0

很高興我可以幫助 –

相關問題