从我的班级访问母版页/子页面控件
我的母版页上有一个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。