これを削除できるように、Razor で既定のレイアウト ページを (1 か所で) 指定したい:
@{ LayoutPage = "~/Views/Shared/_Layout.cshtml"; }
私が持っているすべての.cshtmlファイルから。でも方法がわかりません...何かアイデアはありますか?ASP.NET MVC 3 Preview 1 の Razor エンジンを使用しています。
これを削除できるように、Razor で既定のレイアウト ページを (1 か所で) 指定したい:
@{ LayoutPage = "~/Views/Shared/_Layout.cshtml"; }
私が持っているすべての.cshtmlファイルから。でも方法がわかりません...何かアイデアはありますか?ASP.NET MVC 3 Preview 1 の Razor エンジンを使用しています。
「〜/ Views /_ViewStart.cshtml」ページと次の内部を作成します。
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
ここにコードを記述できるので、対象となるデバイスの種類などに応じてレイアウトを変更することができます。
これは、空のMVC3プロジェクトにデフォルトで作成されるようになりました。
これを行う方法は、共通のページ要素 (ヘッダー) が必要なビュー ディレクトリのルートにある _init.cshtml ファイルを使用することです。Razor ビュー エンジンは、ページをビルドするときに、_start.cshtml、_init.cshtml、および _end.cshtml という名前の特定のファイルを自動的に探します。これらのファイルは、リクエストごとにビュー エンジンによってそれぞれの順序でロードされます。これらのファイルに LayoutPage 定義やその他の一般的な初期化操作を配置すると、すべてのページに対して確実に実行されます。
注: ドキュメントから明確ではなかったため、効果がサブディレクトリに渡されるかどうかはわかりません。あなたはそれを試してみて見つける必要があります。
これを行う方法については、Razor を使用したページの作成に関する Microsoft のハウツー本に、かなり詳細な情報があります。169 ページの「フォルダー内のファイルの前後にコードを実行する」セクションを見つけました。本全体と追加の Razor サンプルについては、このMicrosoft ダウンロード ページを確認してください。
MVC 3 Preview 1 でこれを行う簡単な方法はありません。これはプレビュー ビットの制限であり、今後のリリースで対処される予定です。残念ながら_init.cshtml
、MVC3 のこのプレビューではファイルが機能しないため、Web ページのパターンに従うことはできません。
それを機能させるために私が考えることができる2つの方法があります(どちらも最適ではありませんが)
@inherits
、すべてのビューでディレクティブを指定する必要があります。View(string viewName, string masterName)
オーバーライドを使用)。どこでもレイアウトを繰り返す手間を省くためのヘルパー メソッドを持つ中間コントローラー基本クラスを作成できます。