ASP.NET MVC でよくわからないエラー
ご無沙汰しております。いつの間にか2010年になっていますね。このブログもかれこれ6年目に突入?(2005年の1月頃から書き始めたようです)。
既に1月が終わろうとしていますが、近いうちに2009年の復習と、2010年の目標などをまとめたいと思います。
本題
久しぶりに必要に迫られてASP.NET MVCを使ってWebアプリケーションを作っています。ちゃんと?使うのは久しぶりのため、記憶をたどりつつ。。。
作っているのは非常に単純なもので、Web上から情報が更新できる簡単なCMSのようなものです。DBのテーブルも4つくらい。
で、Viewを作るときに、RailsのScaffoldのようなことがしたいのですが、どうやるか忘れていました。
やり方
*手順をまとめただけなので、スクリーンショットとやってる事の手順がちょっと違います。例えば「Site.master」を選択しているスクリーンショットを掲載しておきながら、発生しているエラーは、独自に作成した「master.master」を選択している、ということをやったりしています
ModelsにLINQ to SQLのクラス(正式名称名なんだ。dbmlファイル)を作り、適当にテーブルを放り込み、Controllerにコードを書き、「return View();」にList型にして渡すように書きます。
public ActionResult Index() { DataContext context = new DataContext(); var members = from mem in context.Member select mem; return View( members.ToList()); }
このあとViewを自動生成してもらうべく、右クリックして「Add View」を選択します。
さらにウィザードで設定を行い、「Add」しますが、以下のようなエラーが出ることがあります。
どうやら独自につくったViewMasterPageを選択すると発生するのですが、原因がわからん。
さらにプロジェクトを作ったときに最初から入ってくる「Site.master」を選んでも、List(テーブルの中身の列挙)をするHTMLを吐いてくれないし、作成したViewをWebブラウザから見ると、「型がおかしいよ」みたいな例外が発生します。
MVCのランタイムが古いとか、更新があるかなとWebplatformなんちゃらで確認しましたが、そんなこともないみたい。
しかし、もう一つ別にMVC Webアプリケーションを作ってみたところ、ちゃんとViewを生成してくれました(自分で作ったViewMasterPageでも問題ない)。
うーん、謎。
悩んでないで作るなおしたほうが早そう。
調べたりしたけど
Error using LINQ Statement - ASP.NET Forums
ここに同じようなエラーが出て悩んでいる人が。「strongly-typed view」を使いたいなら、
- 別のクラスを作って
- アクセス可能なプロパティを定義して
- そっからひっぱってこい
的なことがかかれているのですが、そんなことしたくない(しなくてもできることを知っている)、のでちょっと悩んでみましたが「前と同じ風にできない」のが結論です。うーん。