2011-08-09 53 views
0

尝试从内容页面获取显示在母版页上的usercontrol属性的值,但该值不正确。从内容页面访问MasterPage上UserControl的属性

母版APSX:

<div style="float: left"> 
     <uc:SessionSummary ID="SessionSummary1" runat="Server" /> 
    </div> 

母版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始终是假的,即使在控制显示的文字是“是”

没有看到什么我失踪。任何帮助,将不胜感激。

编辑- 好的,这里是我的德里马。我检查了几个页面事件,发现一个会给我价值。但是,由于该属性位于主页面上,并且主页面是内容页面的子控件,所以该值仅在内容页面的Page_Load事件之后可用。我需要根据主设备的这个值在内容页面中呈现控件。思考?

回答

2

你可以尝试重写页面的onLoadComplete,在这个阶段的页面生命周期控件将加载数据。

protected override void OnLoadComplete(EventArgs e) 
     { 
      bool _value = Master.SessionSummaryControl.RejectedBatches; 
      base.OnLoadComplete(e); 

     } 
+0

我想我尝试过这个事件,但问题是_value获得的时间晚,以便它能够决定在页面加载事件中将在内容窗体上加载的内容。 – Tim

+0

您能否给我更多关于您想要做什么的信息这个值必须在页面加载完成,而不是在页面加载完成?! –

+0

我在安装过程中加载的主页上有一个控件值。该值通知用户它有他们需要立即处理的项目。所以当他们点击链接进入正确的表单时,我知道默认情况下需要显示哪些数据给用户。我知道有几种方法可以实现目标,但我现在确实有一种工作模式。但是,如果以这种方式获取价值是可能的,我想指出它,因为我知道我将在未来使用它。 – Tim

1

你打电话给Master.SessionSummaryControl.RejectedBatches?如果在用户控制数据有界或初始化之前,那么你将会遇到这个问题。

请参考页面生命周期以确保您足够晚的时间访问用户控件。

+0

对不起,我应该已经包括它在Page_Load事件下,如果(Page.IsPostBack!){BOOL _value = Master.SessionSummaryControl.RejectedBatches;} – Tim

+0

确定这里是我的delima。我检查了几个页面事件,发现一个会给我价值。但是,由于该属性位于主页面上,并且主页面是内容页面的子控件,所以该值仅在内容页面的Page_Load事件之后可用。我需要根据主设备的这个值在内容页面中呈现控件。思考? – Tim

0

我将通过这个步骤可能在调试器,看看发生了什么事情都双向互动。

我最好的猜测是,lblRejectedBatches文本是越来越设置你想要的结果加载到之后的某个_value

相关问题