2012-04-24 51 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) 
} 
相關問題