2011-08-09 56 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

相關問題