如果我问一些明显的话,我会道歉。我正在从常规的asp.net编程切换到MVC,从vb切换到c#。一切都很好,但我还有很多东西需要学习。
我收到以下错误
无法隐式转换类型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();
}
我的viewModel如下所示
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
正如您所看到的那样,在State上加上模型前缀。
我非常感谢我能得到的任何帮助。感谢。
答案 0 :(得分:0)
您从不同的位置拥有相同的班级名称。如果你想分配价值,请注意他们需要属于同一类型。
在您的情况下,您必须选择IEnumerable<project.state>
或IEnumerable<project.models.state>
,不要将project.state
分配给project.models.state