完成したサンプル
以下はこれまで構築してきた簡単なアプリケーションのスクリーンショットです。
これがProductsControllersで、/ProductsというURLを実装し、データベースからカテゴリーを取得し、それらをビューテンプレートに引き渡し、描画します。
![](http://cz-cdn.shoeisha.jp/static/images/article/5548/5548_image_thumb_579C48521_6A901487.gif)
以下が「Index.cshtml」ビューで、/Productsの応答を描画するのに使用します。
以下が「SiteLayout.cshtml」レイアウトファイルで、サイト全体で、統一感のある見た目と操作性を実装するのに使用します。
以下が「_ViewStart.cshtml」ファイルで、サイトのすべてのビューが、デフォルトで「SiteLayout.cshtml」ファイルを使用するよう指定する時に使用します。
以下が、/ProductsというURLから生成されたHTMLです。
![](http://cz-cdn.shoeisha.jp/static/images/article/5548/5548_image_44F25D5A.gif)
サイトに共通のレイアウトファイルができたので、これでアプリケーション内に、統一感があり非常に簡単に保守できるサイトUIを持った、機能、コントローラ、ビューをさらに構築できます。
より上級な事柄
よくある質問が2つあります。
- ネストされたレイアウトファイルは可能ですか?
- 複数の、隣接しない、置換可能な範囲をレイアウトファイル内に設定して、ビューファイル内で複数の異なるセクションに『埋め込む』ことは可能ですか?
答えは、両者ともにもちろん!です。この方法のサンプルを、今後のブログ投稿に掲載します。
まとめ
以前も書きましたが、ASP.NET MVC 3およびRazorのリリースにおいて取り組んだテーマの1つが、コードをよりクリーンで簡潔にすることでした。今回のリリースのこの新しいレイアウト機能が、ビューファイルの読み書きを、より一層簡単にすることに上手く貢献していると思います。今後の投稿で、ASP.NET MVC 3ベータ版の新機能でこのような素晴らしい機能をカバーしていきます。
Hope this helps,
Scott
P.S. ブログに加え、現在Twitterを使って簡単な更新やリンク共有を行っています。twitter.com/scottguで、私をフォローしてください。