2012-04-24 52 views
1

阅读本线程,但并没有真正回答我的问题,有相当多的建议,所以不知道他们是否在正确的轨道上:Master Page content filtering with respect to asp page如何通过主页面隐藏某些页面上的内容而不是其他页面?

我所拥有的是1母版页的站点,在这所有页面都使用的全球页脚。我想仅消除1页(即登录页面)上的页脚,但保持所有其他母版页内容不变。

我知道我可以为这个登录页面创建一个单独的母版页,但它似乎矫枉过正。有没有一种方法可以加入一些逻辑:如果仅仅是这个特定的页面,它会隐藏页脚,然后显示在其他页面上?

感谢您的任何提示/建议。

编辑:后面的代码中已经有一个Page Load子页面。我只需要在If语句中添加 - MasterPage_Footer.Visible = False,当用户未登录时,它们在登录时将其设置为True。工作方式类似于魅力。感谢所有的建议。

+0

是你的页脚在一个单独的服务器端控制从主页上的其他信息(如' ContentPlaceHolder')? – jadarnel27 2012-04-24 17:04:17

+0

您不能在运行时获得您的**网页名称**吗?然后你可以添加一个css类到容器中,该容器包含**页脚** ...类似于** Path.GetFileName(request.PhysicalPath)** – 2012-04-24 17:05:25

+0

@ jadarnel27是的,脚注位于一个ContentPlaceHolder标签中 – Valien 2012-04-24 17:18:38

回答

5

暴露在母版属性,以允许如果需要的内容页面覆盖默认行为。

在母版:

private bool showFooter = true; 

public bool ShowFooter { get {return showFooter;} set {showFooter = value;} } 

protected void Page_Load(object sender, EventArgs e) 
{ 
    footerControl.Visible = showFooter; 
} 

让需要访问属性确保内容页面的ASPX下面一行:

<%@ MasterType TypeName="XXX" %> 

,并在内容页代码隐藏:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Master.ShowFooter = false; 
} 
+0

@Tim,MasterType创建对主页类的强类型引用。 http://msdn.microsoft.com/en-us/library/ms228274(v=vs.80).aspx – George 2012-04-24 21:15:33

1

在你的母版:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var page = HttpContext.Current.Handler as Page; 
    FooterControl.Visible = HttpRequest.IsAuthenticated && !(page is LoginPage) 
} 
相关问题