2013-06-26 26 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