2017-08-03 58 views
0

我想找到一种方法来使用Razor网页中的替代标头而不使用两个_SiteLayout页面,每个_SiteLayout呈现不同的_header页面。使用条件逻辑调用网站布局页面中的替代标头

我想要实现这一点 - 如果default.cshtml页面被调用使用header-1,如果任何其他页面被调用使用header-2。我已经尝试了各种不同的逻辑,没有喜悦,包括:IsCurrentPage,Request.QueryString,Request.Url;和CurrentPage.Name。

E.G.

@if ((Request.QueryString["Default"] == null)) 
{ 
     @RenderPage("/shared/_header-1.cshtml") 
} 
else 
{ 
     @RenderPage("/shared/_header-2.chtml") 
} 

而且

@{ 
var pageUrl = this.Request.Url; 
} 
@if (pageUrl = "http://mycompany/Default.cshtml/") { 
@RenderPage("/shared/_header-1.cshtml"); 
} 
else 
{ 
@RenderPage("/shared/_header-2.cshtml"); 
} 

有没有人有一个简单的方法来实现这一目标吗?

回答

0

虽然我花在这个很长一段时间,发布后没多久,我发现答案感谢:Erik Philips

添加到_SiteLayout:

@if (IsSectionDefined("customHeader")) 
{  
@RenderSection("customHeader") 
} 
else 
{ 
@RenderPage("/shared/_header.cshtml") 
} 

添加到默认页面

@section customHeader{ 
This is custom header 
} 

公共标题不会在默认页面中调用,因为改为指定customHeader;而所有其他页面使用正常标题