2012-02-16 10 views
6

私のプロジェクト(ヘッダー、フッター)のマスターレイアウトを定義する_ViewStartがあります。ネストされたコンテンツの領域に_ViewStartを使用する

このプロジェクトでは、いくつかの領域があります。すべての領域には同じヘッダーとフッターがあり、さらにサイドメニューもあります。そのために、その領域のルートディレクトリに_ViewStartを作成しました。ここでは(簡体字)のコードです:

/Views/_ViewStart.cshtmlは

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

/Views/Shared/_Layout.cshtml

<html> 
     <div> 
      //header 
     </div> 
     <div> 
      @RenderBody 
     </div> 
    </html> 

エリアはFoo - > /エリア/フー/ビュー/_ViewStart.cshtml

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<div class="row"> 
<div class="sidemenu"> 
    //default sidemenu for this area 
</div> 
<div> 
     @RenderBody() 
</div> 
</div> 

ページ/Areas/Foo/Views/Bar/Index.cshtmlは表示されませんし、私はこのエラーを取得する:

CS0103:名前は「RenderBody」マスターページのネストのこの種を達成するためにどのように現在のコンテキストで

存在しないのですか?

答えて

9

私は自分の質問に答えることを憎むが、ここでは行く:

あなたがそこRenderBodyをしたい場合は、お住まいの地域の_ViewStartに直接サイトのルート_ViewStartを参照することはできません。

だから、解決策は以下のとおりです。

/Views/_ViewStart.cshtml参照/Views/Shared/_MainLayout.cshtml

/Areas/Foo/Views/_ViewStart.cshtml参照/Areas/Foo/Views/Shared/_AreaLayout.cshtml

/Areas/Foo/Views/Shared/_AreaLayout.cshtml参照/Views/Shared/_MainLayout.cshtml

これだけです。メソッド "RenderBody()"を使用できるようにするには、 "Shared"フォルダを使用する必要があります。

関連する問題