つづいて、ソリューションにダウンロードしたMVCのソースからプロジェクトを追加。既存プロジェクトの追加ですね。mvc3-beta-source\mvc3\src\SystemWebMvc\System.Web.Mvc.csprojwebpages\src\System.Web.Helpers\System.Web.Helpers.csprojSystem.Web.Razor\System.Web.Razor.csprojSystem.Web.WebPages\System.Web.WebPages.csprojSystem.Web.WebPages.Razor\System.Web.WebPages.Razor.csprojWebMatrix.Data\WebMatrix.Data.csprojあとは、アプリケーションプロジェクトで削除した参照設定の分をここで追加。ほらね、これでReSharperも黙った。最後の一手が必要なんだけど、この段階でステップインしてみましょう。RazorViewのRenderViewを開いてブレークポイント。残念ながら例外ラッシュ。最後の一手を打つ時が来ました。エラー内容の通り、デフォルトのweb.configだとGACのアセンブリを見るようになってるので、ちゃんとローカルのアセンブリを見るよう変更する必要があります。アプリケーションルートのweb.configのassembliesセクションを以下のように。</assemblies></compilation>~/Views/web.configも同じようにGAC見ないように変更。</pages></system.web.webPages.razor>いずれも、VersionとCultureとPublicTokenを消すだけね。foundの例外が起きててちょっとウザイけど。これで何か気になるところがあると何でも調べられて便利この上ないですな。WebPage.InitializePageなんていうvirtualな空メソッドがいて、必ず初期化時に呼び出されてたりするなんてのもみえてきて、ココでも処理の横取りできるな~とか。readonlyでセットされてる。スクリーンショット祭りだね...。Betaのソースが公開されましたね!凄いリファクタリングが進んでます。BetaDatabaseや各種Helperなんかはドキュメント整理また無くてもすべてまるっとお見通しだ!な状態で使っていけるのは嬉しい限りです。Scottguのブログで以下のようなエントリがありました。BlogWebFormsでいうところの.MasterはWebPagesでLayoutというのですが(基底クラスの違うcshtml/vbhtmlですね)、どうやって使いましょうかという内容です。@RenderBody(他にもSectionとかいいものもたくさんありますよ!)が魔法の言葉です。簡単にIndex.htmlにLayoutプロパティを指定する方法。これは直感的で分かりやすいですね。対象となるViewのヘッダ部で直書きですから。全部のViewにいちいちLayout書くの面倒だ!ってなった場合、StartPageクラスの隠しViewとして_ViewStart.cshtml(~/Viewsに置いとくとよしなに処理してくれる優れものだけど、規約嫌いの人には気持ち悪いと言われそう)というのがあるので、それを使って一括で指定してしまう方法があります。ここまでをScottguは紹介してくれてますが、MVCerならだれもが気になるところのViewメソッドのMaster指定オーバーロードの場合どうなるんだべ?というところ。View();}↑これが普通だけど、↓こうするパターンです。View("Index","_Layout");}部分的にLayoutを変更したい時などによく使いますが、StartPageで指定したものと、WebPage内で指定したもの、ViewResultで指定したものの優先順位が気になりますよね!ね?試してみましょう。_ViewStart.cshtmlとIndex.cshtmlの両方でLayoutを指定した場合どちらが優先されるのか。比較するために以下のような単純な_SimpleLayout.cshtmlと_PinkLayout.cshtmlを~/Views/Shared直下に置いておきます。</div></body></html>この状態で、_ViewStart.cshtmlでは"_Layout.cshtml"を指定し、Index.cshtmlでは"_SimpleLayout.cshtml"を指定してみる。Index.cshtmlに指定したLayoutが優先されますね。この状態で、ControllerでPinkLayoutを指定してみます。"_PinkLayout");}おぉ~。Controller指定(ViewResult)最強の優先順位。理由は公開されたソースを見ていくとわかるんでしょうね。なんか深くてみるの面倒だな~。