2011-10-17 60 views
4

我似乎無法得到此工作。將@section放入@if .net mvc 3

@if (isReal) 
{ 
    @section Navigation{ 
     @{Html.RenderPartial("NavigationForInput");} 
    } 
} 

不工作,因爲它說:「一旦進入你不」需要@等等等等等等代碼」當我在一節的前部取出@

但是,它要使用部分作爲一個類型變量。

我該如何纔能有條件地顯示該部分?

回答

5

取決於如果你的佈局有不確定的部分替代或沒有,你可以只扭轉@if@section

@section Navigation{ 
{ 
    @if (isReal) 
     @{Html.RenderPartial("NavigationForInput");} 
    } 
} 

如果你只是想離開了導航,這應該是很好,但它贏得了如果您在佈局中使用IsSectionDefined(「導航」),那麼它將無法正常工作,因爲它將始終返回true。

+0

以及問題是,我的一些模板將不會有導航部分,因此,如果我將不得不在我的_layout頁面中使用IsSectionDefined。這應該工作......非常感謝 –

+0

如果你真的想把節前,因爲你使用IsSectionDefined部分,你可以看看這個鏈接:http://stackoverflow.com/questions/5982636/razor-syntax-to-render -section-based-on-condition – plauriola

1

@section Name { 
} 

構建體可用於定義一個部分。要渲染一個部分,請使用RenderSection()方法。

+0

我讀這個問題的方式,OP希望在條件上定義頁面上的部分(而不是佈局,如你所想)。 –

4

的想法:

@if (Condition) 
{ 
    <text> 
    @section SectionName { 

    } 
    </text> 
} 

下面是代碼:

@if (isReal) 
{ 
    <text> 
    @section Navigation{ 
     @{Html.RenderPartial("NavigationForInput");} 
    } 
    </text> 
} 

編碼愉快!

+3

而不是醜陋的你可以放在@:例如@:@section Navigation {// ... – Vladimirs