2013-06-26 64 views
1

我有興趣根據頁面級別而不是模板級別在不同位置呈現部分,這可能嗎?例如:定義部分在視圖中呈現的位置

模板:

<body> 
@if (IsSectionDefined("oneColumn")) { 
    @RenderSection("oneColumn", false)  
    <div class="row">    
    @RenderSection("oneColumn_1", true) 
    </div> 
} 

@if (IsSectionDefined("twoColumn")) { 
@RenderSection("twoColumn", false) 
    <div class="row">    
    @RenderSection("twoColumn_1", true) 
    @RenderSection("twoColumn_2", true) 
    </div> 
} 
</body> 

頁級別:

@{ 
    Layout = "template.cshtml"; 
} 

@section twoColumn{}  
@section oneColumn{} 

@section twoColumn_1 { <div>THIS IS COLUMN 1 - ColSpan 1</div> } 
@section twoColumn_2 { <div>THIS IS COLUMN 2 - ColSpan 2</div> } 
@section oneColumn_1 { <div>THIS IS COLUMN 1</div> } 

這始終呈現twoColumn部分上面的oneColumn部分。但我想要oneColumn上方的twoColumn。希望在不創建其他模板的情況下做到這一點。

回答

0

除非引入另一級別的子模板/局部視圖,否則無法指示將在「頁面級別」中顯示哪些部分。

我假設您不希望總是在一列內容上方顯示兩列內容。

如果你希望能夠偶爾使兩列一列的部分上面,再加入另一部分到您的模板(佈局視圖)喜歡的東西:

@if (IsSectionDefined("oneColumnAfterTwo")) { 
@RenderSection("oneColumnAfterTwo", false) 
    <div class="row">    
    @RenderSection("oneColumn_1", true) 
    </div> 
} 

和修改頁面/意見,包括oneColumnAfterTwo而不是oneColumn需要的地方。

+0

你能用一個例子來定義子模板嗎? – worked