2013-10-04 9 views
8

Mam następujący kod w moim _Layout.cshtml:ASP.NET MVC - Render warunkowo w sekcji Układ

@if (SiteConfig.Instance.HasCustomMarkup) 
{ 
    @RenderSection("bodyPart1", false) 
    @RenderBody() 
    @RenderSection("bodyPart2", false) 
} 
else 
{ 
    <div id="mainContainer"> 
     @RenderBody() 
    </div>   
} 

więc staram się uczynić odcinki tylko na pewnym warunkiem. Ale to nie działa i mam wyjątek:

The following sections have been defined but have not been rendered for the layout page ... 

Czy istnieje jakieś obejście tego problemu w tym celu? dzięki!

Odpowiedz

18

Wystarczy sprawdzić, czy sekcja istnieje, tj .:

@if (IsSectionDefined("bodyPart1")) 
{ 
    @RenderSection("bodyPart1") 
} 
+1

Dzięki za odpowiedzi! Jest zawsze zdefiniowany w moim przypadku. Ale znalazłem rozwiązanie, które działa - zawija definicję sekcji do znaczników , a następnie definiuje sekcje, jeśli jakiś warunek jest prawdziwy w czasie wykonywania, iw ten sposób nie otrzymuję wyjątku. – igorGIS

+2

@igorGIS proszę zamieścić swoją odpowiedź :) – Rachael