我的母版頁上有一個div,我想用它來顯示頁面錯誤。我有一個錯誤顯示類,它工作正常。我的問題是,在某些情況下,即使在導致消息顯示(非)顯示的標記之前,也會顯示錯誤。這主要是與具有response.redirect的代碼。從我的班級訪問母版頁/子頁面控件
我想通過在我的母版頁中顯示一個div上的錯誤來對付這個問題(很有幫助)。
如何訪問<div id="errorSegment" runat="server">
?
我的母版頁上有一個div,我想用它來顯示頁面錯誤。我有一個錯誤顯示類,它工作正常。我的問題是,在某些情況下,即使在導致消息顯示(非)顯示的標記之前,也會顯示錯誤。這主要是與具有response.redirect的代碼。從我的班級訪問母版頁/子頁面控件
我想通過在我的母版頁中顯示一個div上的錯誤來對付這個問題(很有幫助)。
如何訪問<div id="errorSegment" runat="server">
?
對任何繼承自System.Web.UI.Control
的類都可以使用FindControl
方法。這包括母版頁,頁面和用戶控件。例如,從頁面類,你可以這樣做:
HtmlGenericControl errorDiv = (HtmlGenericControl)Master.FindControl("errorSegment");
其他的事情要記住有關使用FindControl
是在ASP頁面控件排列在控制樹形結構。這意味着您需要在樹中的正確節點(通常是Page或MasterPage)上調用FindControl
。
您可以創建一個公開的div您的母版頁上的公共屬性:使用該母版頁將通過Page.Master屬性的引用母版頁
public HtmlGenericControl ErrorSegment
{
get { return errorSegment; }
}
您的網頁,但此屬性的類型將成爲基礎母版頁面類,而不是具有公共屬性的特定類。因此,這種標記添加到網頁的ASPX標記生成帶有特定母版頁輸入主屬性:
<%@ MasterType VirtualPath="~/AccessManager.Master" %>
您可以從頁面使用頁面的引用母版頁,然後訪問:
this.Master.ErrorSegment
你的母版可以有一個公共財產暴露在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。