SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Scott Guthrie氏 Blog翻訳

ASP.NET MVC 3: Razorでのレイアウト

ScottGu's Blog翻訳

  • X ポスト
  • このエントリーをはてなブックマークに追加

_ViewStartでDRY化

 現在、「Index.cshtml」ファイルのトップに、使用するレイアウトファイルをプログラム的に設定しています。これは、レイアウトファイルが特定のビューによって変化する、ビュー特有のロジックがある場合は問題ありません。しかし、ほとんどのWebアプリケーションでは、全てのビューが同じレイアウトを使用していたり、異なるレイアウト(例えば、モバイルデバイスやローカライズされたサイトなど)ではあるが、全てのビューに渡り共通のものを拾うロジックになっているため、この方法で設定すると、冗長で重複的なものになってしまう可能性があります。

 いいニュースですが、Razor(ASP.NET MVC 3ベータ版 リリースから開始)に新機能が加わり、各ビューで明示的にレイアウトを設定する必要性を省け、その代りにサイト上ですべてのビューに対して1つのレイアウトロジックが定義できるようになったので、ビューファイルをより一層クリーンで保守しやすくなります(そして、DRY原則、Don't Repeat Yourselfが守れます)。

 ASP.NET MVC 3ベータ版リリースから始まったのですが、プロジェクトの「\Views」フォルダに、「_ViewStart.cshtml」(VBでは、_ViewStart.vbhtml)と呼ばれるファイルを追加できます。

 「_ViewStart」ファイルは、各ビューの描画開始時に、実行したい共通のビューコードを定義するために使用できます。例えば、「_ViewStart.cshtml」ファイル内に、以下のようなコードを書いて、デフォルトで、「SiteLayout.cshtml」ファイルになるよう、レイアウトプロパティを、プログラム的に設定できます。

 このコードは各ビューの開始時に実行されるため、個々のビューファイルにおいて、レイアウトを明示的に設定する必要はもうありません(ただし、上記のデフォルトの値をオーバーライドしたい場合は除く)。

 重要:「_ViewStart.cshtml」によりコードが書けるようになるため、単純な基本プロパティセットではなく、オプションとして、よりリッチなレイアウト選択ロジックが可能になります。例えば、サイトにアクセスしているデバイスのタイプに応じて、レイアウトのテンプレートを変更し、電話またはタブレットには、各デバイスに最適化されたレイアウト、またPC/ラップトップには、デスクトップの最適化されたレイアウトを適用します。または、もしCMSシステムや共通の共有アプリケーションを構築している場合、サイトにアクセスしている顧客(または彼らの役割)に応じて、異なるレイアウトが選択できます。

 これによってUIの柔軟性が向上します。またビューロジックがより簡単に書け、繰り返しの記述を防げます。

注:

 コントローラやアクションフィルタ内でもレイアウトを指定できます。もしそのままのレイアウト選択ロジックがよければ、そのままにもしておけます。

次のページ
完成したサンプル

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Scott Guthrie氏 Blog翻訳連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト Chica(チカ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Scott Guthrie(Scott Guthrie)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5548 2010/11/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング