2017-04-18 53 views
0

我想提出一個清單,車輛填充的動態列表,使使用存儲過程和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

非常感謝,謝謝:) –

回答

3

從錯誤消息中可以看出,在您的操作方法中,表達式db.prcGetMakes().ToList()返回字符串列表,並將其傳遞給視圖。但是,您的視圖強烈鍵入tblVehicle對象列表,因此獲取有關類型不匹配的錯誤消息。

解決方法是使兩種類型匹配。您可以更新您的看法是強類型string

@model IEnumerable<string> 

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

非常感謝。這工作完美:) –