2010-07-26 107 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。

相关问题