inohilog

/var/log/inohiro.log

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」を使いたいなら、

  • 別のクラスを作って
  • アクセス可能なプロパティを定義して
  • そっからひっぱってこい

的なことがかかれているのですが、そんなことしたくない(しなくてもできることを知っている)、のでちょっと悩んでみましたが「前と同じ風にできない」のが結論です。うーん。