2012-03-07 50 views
0

ASCX定製控件的屬性我有我的自定義用戶控件此以下屬性:如何訪問masterpage.master.cs

public string selectedtab 
     { 
      get 
      { 
       if (ViewState["AdminCurrentNavID"] != null) 
       { 
        return ViewState["AdminCurrentNavID"].ToString(); 
       } 
       else { 
        isfirstload = true; 
        return null;     
       } 
      } 

      set { ViewState["AdminCurrentNavID"] = value; } 
     } 

我設置我在ascx控件的Page_Load()它的價值。我需要做的是設置這個屬性的值後,我需要從後面的代碼masterpage.cs訪問它。你可以看到我目前在下面的代碼中試圖做什麼,但問題是我無法獲得它的價值,因爲主頁的Page_Load()呈現在ascx控件之前,所以我就是爲什麼我得到null價值,請幫助,謝謝。

masterpage.cs:

usercontrols.mainmenu adminmenu = (usercontrols.mainmenu)LoadControl("~/mymenupath.ascx"); 
lbmsg.Text = adminmenu.selectedtab; 

回答

0

當你調用LoadControl在你的主頁,你實際上是創建用戶控制的新實例,而不是訪問你在你的網站上的某個地方之一。

當您在頁面中聲明用戶控件時,應該給它一個id。你可以通過類似((usercontrols.mainmenu)MyUserControlId).selectedtab

+0

您好,感謝,我沒有一個ID,因爲我使用的佔位符,然後我做 placeholderId.Controls.Add(adminmenu); – 2012-03-07 21:07:27

+0

您可以改爲placeholderId.FindControl(「myUserControlId」),但請確保在將用戶控件添加到佔位符之前將其分配給用戶控件。 – Dante 2012-03-07 21:42:50

+0

我沒有ID也不知道你是否完全明白我在做什麼,因爲我不能把任何ID放到ascx控件中去做我在代碼中加載的FindControl,但是非常感謝你的幫助幫助,我在下面的答案中找到了確切的解決方案,您看到我發佈了。 – 2012-03-08 03:30:52