MVC を (初めて) エンティティ フレームワーク、データベースを最初に使用しています。
私がやりたいことは、データベースからのデータを単一のビューに表示することです。最初にデータベースを作成し、次にすべてのテーブルを含むデータベースに基づいて ADO.NET Entity Data Model を作成しました。次に、Entity Data Model をモデルとして厳密に型指定された Index ビューを作成しました。
私のインデックスでは、一番上にあります
@model IEnumerable<Forum6.Models.Forum>
これにより、データベースからテーブル「フォーラム」から行を取得できます。追加のモデルを追加しようとすると、実行時に次のエラー メッセージが表示されます。
Line 1: @model IEnumerable<Forum6.Models.Forum> Line 2: @model2 IEnumerable<Forum6.Models.Post>
パーサー エラー メッセージ: 1 つのファイルで使用できる 'model' ステートメントは 1 つだけです。
答えを探した後、私はこれを見つけました: ASP MVC 3 の 1 つのビューにある 2 つのモデル 答えは、すべてのモデル (テーブル) を含む ViewModel (ParentModel) を作成することでした。これは私が作成した ViewModel です。
public class ViewModel
{
public IEnumerable<Forum6.Models.Forum> Forum { get; set; }
public IEnumerable<Forum6.Models.Post> Post { get; set; }
public IEnumerable<Forum6.Models.Topics> Topics { get; set; }
public IEnumerable<Forum6.Models.Users> Users { get; set; }
public IEnumerable<Forum6.Models.PrivMsg> PrivMsg { get; set; }
public IEnumerable<Forum6.Models.Permission> Permission { get; set; }
}
コントローラーを次のように編集しました。
public class HomeController : Controller
{
// ForumDBEntities old_db = new ForumDBEntities();
ViewModel db = new ViewModel();
public ActionResult Index()
{
return View(db);
}
}
次に、古い Index ビューを、ViewModel をモデルとして使用する厳密に型指定された新しいビューに置き換えました。を含む:
@model IEnumerable<Forum6.Models.ViewModel>
これを実行しようとすると、次のエラーが表示されます。
ディクショナリに渡されたモデル アイテムのタイプは 'Forum6.Models.ViewModel' ですが、このディクショナリにはタイプ 'System.Collections.Generic.IEnumerable`1[Forum6.Models.ViewModel] のモデル アイテムが必要です。
「ViewModel」を列挙可能にするにはどうすればよいですか? または、私のエラーは別の場所にありますか?