创建MVC使用实体框架剃刀

问题描述:

我想提出一个清单,车辆填充的动态列表,使使用存储过程和Entity Framework,但是当它出现以下错误:创建MVC使用实体框架剃刀

模型项目传入字典的类型是'System.Collections.Generic.List 1[System.String]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [VehicleInfo.Models.tblVehicle]'。

型号

public partial class tblVehicle 
    { 
     public string BrandName{ get; set; } 
    } 

控制器

public ActionResult Index() 
    { 
     VehicleDBContext db = new VehicleDBContext(); 

     var brandnames = db.prcGetMakes().ToList(); 

     return View(brandnames); 
    } 

查看

@model IEnumerable<VehicleInfo.Models.tblVehicle> 

<ul id="Makes"> 
    @foreach (var item in Model) 
    { 
     <li>@item.BrandName.Distinct()</li> 
    } 
</ul> 

存储过程

CREATE PROCEDURE [dbo].[prcGetMakes] 

AS 
BEGIN 

    SET NOCOUNT ON; 

    SELECT DISTINCT 
     UPPER(BrandName) BrandName 
    FROM 
     tblVehicle 
    ORDER BY 
     BrandName 
END 

一定有什么令人惊讶的明显,我的思念,但我似乎无法工作了。

请帮忙!

+1

什么是'db.prcGetMakes()的结果类型的列表。ToList()'?这是一个字符串列表吗?那么错误就是自我解释。您的视图被强制输入到“tblVehicle”列表中。使用当前视图代码,您基本上需要返回'tblVehicle'对象的列表。 – Shyju

+0

非常感谢,谢谢:) –

从错误消息中可以看出,在您的操作方法中,表达式db.prcGetMakes().ToList()返回字符串列表,并将其传递给视图。但是,您的视图强烈键入tblVehicle对象列表,因此获取有关类型不匹配的错误消息。

解决方法是使两种类型匹配。您可以更新您的看法是强类型string

@model IEnumerable<string> 

<ul id="Makes"> 
    @foreach (var item in Model) 
    { 
     <li>@item</li> 
    } 
</ul> 
+0

非常感谢。这工作完美:) –