2017-04-18 7 views
0

MVCカミソリでEntity Frameworkのを使用して動的リストを作成し、ストアドプロシージャとEntity Frameworkのを使ってますが、それは、私は次のエラーを取得するとき:に渡さ私はリストを車両に移入したいと思い

モデルアイテム辞書の型は '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

の強く型付けされたリストであるためにあなたのビューを更新することができます。ToListメソッド()'?それは文字列のリストですか?エラーは自明です。ビューは 'tblVehicle'のリストに強く入力されます。現在のビューコードでは、基本的に 'tblVehicle'オブジェクトのリストを返す必要があります。 – Shyju

+0

ありがとうございます♪ –

答えて

3

エラーメッセージから、アクションメソッド内の式db.prcGetMakes().ToList()が文字列のリストを返し、それをビューに渡しているようです。しかし、あなたのビューは、tblVehicleオブジェクトのリストに強く型付けされているため、タイプの不一致に関するエラーメッセージが表示されます。

解決策は、両方のタイプを一致させることです。あなたは) `db.prcGetMakes(の結果の型は何stringタイプ

@model IEnumerable<string> 

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

ありがとうございます。これは完全に働いた:) –

関連する問題