0

ビューにある国をリストしようとしています。tbl_Countries というモデルを作成しました。コードは以下のとおりです。

public class tbl_Countries
{
    public int ID { get; set; }
    public string Country_Name { get; set; }
}

次のコードを持つ Home という名前のコントローラーがあります。TestDB データベース用の edmx ファイルを作成しました

public ActionResult Index()
{            
    TestDBEntities TestdbContext = new TestDBEntities();
    var countries = TestdbContext.tbl_Countries.ToList();
    return View(countries);
}

以下は、foreach で ul li を使用して国を表示する私のビュー コード @model IList です。

アプリケーションを実行すると、次のエラーが発生します。

The model item passed into the dictionary is of type 'System.Collections.Generic.List1[TestMVC.tbl_Countries]', 
but this dictionary requires a model item of type 'System.Collections.Generic.IList1[TestMVC.Models.tbl_Countries]

表示されている国のリストを表示したいだけで、モデルクラスを作成せずにグリッドをバインドすることは可能ですか? @modelビューでディレクティブを使用してモデル名を指定することは必須ですか?

4

3 に答える 3

0

エラー メッセージによると、アクション メソッドが返す型List<TestMVC.Models.tbl_Countries>とは異なるビューの型のモデルが必要です。List<TestMVC.tbl_Countries>

この問題を解決するには、ビューが期待するリストを作成し、Entity Framework から取得したデータをそれにマップします。

例えば:

public ActionResult Index()
{            
 TestDBEntities TestdbContext = new TestDBEntities();
 var countries = new List<TestMVC.Models.tbl_Countries>();
 countries = (from country in TestdbContext.tbl_Countries
              select new TestMVC.Models.tbl_Countries
              { 
                  Country_Name = country.Country_Name
              }).toList();

 return View(countries);
}

ビューとデータ アクセスのロジックを分離するには、例の EF モデルから、データ モデルから独立したモデルを用意することをお勧めします。

于 2013-03-31T14:47:31.103 に答える
0

ビューで@model Listを指定したため、このエラーが発生しましたが、それにListを渡し、ビューでListに変更してみてください

はい、 @model をまったく削除できますが、この場合、ビューは厳密に型指定されないため、Intelli センスを使用できません。

于 2013-03-28T09:10:15.063 に答える
0

モデルの国タイプのリストを作成する

    public List< tbl_Countries> country{get;set;}

インデックスページで、このリストの値を設定します

    public ActionResult Index()
    {            
     TestDBEntities TestdbContext = new TestDBEntities();
     tbl_Countries objModel=new tbl_Countries(); 
     objModel.country = TestdbContext.tbl_Countries.ToList();
     return View(objModel);
    }
于 2013-03-28T09:31:33.743 に答える