尝试从内容页面获取显示在母版页上的usercontrol上的属性值,但该值不正确。
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
没有看到我错过的东西。任何帮助将不胜感激。
编辑 - 好的,这是我的delima。我检查过几个页面事件,发现一个会给我价值的事件。但是,由于该属性位于母版页上,并且母版页是内容页面的子控件,因此该值仅在内容页面的Page_Load事件之后可用。我需要根据master中的这个值在内容页面中呈现控件。想法?
答案 0 :(得分:3)
您可以尝试覆盖页面的OnLoadComplete,在页面生命周期的这个阶段,控件将加载数据。
protected override void OnLoadComplete(EventArgs e)
{
bool _value = Master.SessionSummaryControl.RejectedBatches;
base.OnLoadComplete(e);
}
答案 1 :(得分:1)
您何时致电Master.SessionSummaryControl.RejectedBatches
?如果在用户控件被数据限制或初始化之前,那么您将遇到此问题。
请参阅页面生命周期以确保您足够晚访问用户控件。
答案 2 :(得分:0)
我可能会在调试器中逐步完成此操作,看看发生了什么。
我最好的猜测是,在您尝试将结果加载到_value之后的某个时间,lblRejectedBatches的文本会被设置