从内容页访问母版页上UserControl的属性
本文关键字:UserControl 属性 母版页 访问 | 更新日期: 2023-09-27 18:04:51
试图从内容页获取显示在母版页上的用户控件的属性值,但该值不正确。
MasterPage APSX:
<div style="float: left">
<uc:SessionSummary ID="SessionSummary1" runat="Server" />
</div>
MasterPage CS:
public SessionSummary SessionSummaryControl
{
get { return (SessionSummary)this.FindControl("SessionSummary1"); }
}
用户控件:
public bool RejectedBatches
{
get { return lblRejectedBatches.Text.ToUpper().Trim() == "YES" ; }
}
ContentPage ASPX:
<%@ MasterType VirtualPath="MAASDefault.master" %>
<%@ Reference VirtualPath="MAASDefault.master" %>
ContentPage CS:
bool _value = Master.SessionSummaryControl.RejectedBatches;
_value始终为false,即使控件上显示的文本为'Yes'
不知道我错过了什么。如有任何帮助,不胜感激。
编辑-好的,这是我的delima。我已经检查了几个页面事件,并找到了一个会给我的值。但是,由于该属性位于母版页上,并且母版页是内容页的子控件,因此该值仅在内容页的Page_Load事件之后可用。我需要根据母版的这个值在内容页中呈现控件。想法吗?
你可以尝试重写页面的OnLoadComplete,在页面生命周期的这个阶段,控件将加载数据。
protected override void OnLoadComplete(EventArgs e)
{
bool _value = Master.SessionSummaryControl.RejectedBatches;
base.OnLoadComplete(e);
}
您什么时候呼叫Master.SessionSummaryControl.RejectedBatches
?如果是在用户控件被数据绑定或初始化之前,那么你就会遇到这个问题。
请参考页面生命周期,以确保您访问用户控制的时间足够晚。
我可能会在调试器中逐步执行此操作,以查看发生了什么。
我最好的猜测是lblRejectedBatches的文本在你试图将结果加载到_value