2012-02-16 8 views
6

Mam _ViewStart określający układ główny dla mojego projektu (nagłówek, stopka).Używanie _ViewStart na obszarach dla treści zagnieżdżonej

W tym projekcie mam kilka obszarów. Każdy obszar ma ten sam nagłówek i stopkę, a także własne menu boczne. W tym celu utworzyłem _ViewStart na katalogu głównym tego obszaru. Oto (uproszczony) Kod:

/Views/_ViewStart.cshtml

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

/Views/Shared/_Layout.cshtml

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

palących Foo ->/regiony/foo/Odsłon /_ViewStart.cshtml

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

strona /Areas/Foo/Views/Bar/Index.cshtml nie odda i dostaję ten błąd:

CS0103: nazwa „RenderBody” nie istnieje w bieżącym kontekście

Jak osiągnąć ten rodzaj strony wzorcowej zagnieżdżenia?

Odpowiedz

9

Nienawidzę odpowiedzieć na moje własne pytanie, ale tu idzie:

nie można odwołać witryny korzeniowy _ViewStart bezpośrednio na _ViewStart swojej okolicy, jeśli chcesz tam RenderBody.

Więc rozwiązanie jest:

/Views/_ViewStart.cshtml referencje /Views/Shared/_MainLayout.cshtml

/Areas/Foo/Views/_ViewStart.cshtml referencje /Areas/Foo/Views/Shared/_AreaLayout.cshtml

/Areas/Foo/Views/Shared/_AreaLayout.cshtml referencje /Views/Shared/_MainLayout.cshtml

I to wszystko. Musisz użyć folderu "Shared", aby dostępna była metoda "RenderBody()".

Powiązane problemy