2010-07-26 104 views
2

我的母版頁上有一個div,我想用它來顯示頁面錯誤。我有一個錯誤顯示類,它工作正常。我的問題是,在某些情況下,即使在導致消息顯示(非)顯示的標記之前,也會顯示錯誤。這主要是與具有response.redirect的代碼。從我的班級訪問母版頁/子頁面控件

我想通過在我的母版頁中顯示一個div上的錯誤來對付這個問題(很有幫助)。

如何訪問<div id="errorSegment" runat="server">

回答

2

對任何繼承自System.Web.UI.Control的類都可以使用FindControl方法。這包括母版頁,頁面和用戶控件。例如,從頁面類,你可以這樣做:

HtmlGenericControl errorDiv = (HtmlGenericControl)Master.FindControl("errorSegment"); 

其他的事情要記住有關使用FindControl是在ASP頁面控件排列在控制樹形結構。這意味着您需要在樹中的正確節點(通常是Page或MasterPage)上調用FindControl

1

您可以創建一個公開的div您的母版頁上的公共屬性:使用該母版頁將通過Page.Master屬性的引用母版頁

public HtmlGenericControl ErrorSegment 
{ 
    get { return errorSegment; } 
} 

您的網頁,但此屬性的類型將成爲基礎母版頁面類,而不是具有公共屬性的特定類。因此,這種標記添加到網頁的ASPX標記生成帶有特定母版頁輸入主屬性:

<%@ MasterType VirtualPath="~/AccessManager.Master" %> 

您可以從頁面使用頁面的引用母版頁,然後訪問:

this.Master.ErrorSegment 
0

你的母版可以有一個公共財產暴露在div:

public HtmlGenericControl ErrorSegment 
{ 
    get { return errorSegment; } 
} 

正如你可能會使用在很多網頁ErrorSegment財產這可能是件好事申報基地類爲您的網頁,並加入了以下聲明:

public class MyBasePage : System.Web.UI.Page 
{ 
    // This declaration "forces" the Master property to be of your preferred type. 
    public new MyMasterPage Master 
    { 
     get 
     { 
      return ((MyMasterPage)(base.Master)); 
     } 
    } 
} 

現在你可以用下面的代碼在任何頁面導出訪問ErrorSegment從MyBasePage(也間接):

this.Master.ErrorSegment 

這種解決方案的超過優勢<%@ MasterType %>標籤是您可以沿着您的類層次移動此聲明,然後在您需要的任何級別訪問ErrorSegment。

相關問題