--------エラーここから--------
'/' アプリケーションでサーバー エラーが発生しました。
ディクショナリに型 'System.Collections.Generic.List`1[WordLearner.Models.WordDetail]' のモデル項目が渡されましたが、このディクショナリには型 'WordLearner.Models.WordDetail' のモデル項目が必要です。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。例外の詳細: System.InvalidOperationException: ディクショナリに型 'System.Collections.Generic.List`1[WordLearner.Models.WordDetail]' のモデル項目が渡されましたが、このディクショナリには型 'WordLearner.Models.WordDetail' のモデル項目が必要です。
--------エラーここまで--------
調べてみると同じエラーで困っている人がいました。
Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[]' using linq lambda expression
http://stackoverflow.com/a/22918838
そして回答も掲載されていました。今回検索結果のオブジェクトをビューに返すところを、クエリの状態でビューに渡しているのが原因でした💨
変数 query に FirstOrDefault() メソッドでオブジェクトを取得することで解決しました。
public ActionResult Test(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Word word = db.Word.Find(id); if (word == null) { return HttpNotFound(); } int _id = id.Value; var meaning = db.Meanings; var query = from x in db.Word join y in meaning on x.ID equals y.WordID where x.ID.Equals(_id) select new WordDetail { ID = x.ID, Spelling = x.Spelling, Meaning = y.Meaning }; return View("Details", query.FirstOrDefault()); }
0 件のコメント:
コメントを投稿