2012-02-23 38 views
0

我試圖訪問一個ModalPopupExtender控件,並且它總是返回null或對象集未設置爲對象的實例。我試過master.Page.FindControl(「」)和master.FindControl(「」)和IM仍然沒有得到結果在MasterPage上查找控件返回nulll

MasterPage master = Page.Master as MasterPage; 
AjaxControlToolkit.ModalPopupExtender popup = master.Page.FindControl("ModalPopupExtender2") as AjaxControlToolkit.ModalPopupExtender; 

更新時間:不能改變我的標籤的文字母版頁

MasterPage master = Page.Master; 
AjaxControlToolkit.ModalPopupExtender popup1 = master.FindControl("ModalPopupExtender1") as AjaxControlToolkit.ModalPopupExtender; 
Label lblMessage = master.FindControl("lblMessage") as Label; 
lblMessage.Text = msg; 
Literal ltrlMessage = master.FindControl("ltrlMessage") as Literal; 
ltrlMessage.Text = msg; 

Label MessageStatus = master.FindControl("lblMessageStatus") as Label; 
MessageStatus.Text = msgStatus;   
popup1.Show(); 

回答

0

你可以做

MasterPage master = Page.Master; 
0

退房this答案。你可以有一個strongly typed master page,所以你不必找到然後控制。主控制器可以公開訪問,並且該頁面將知道主頁面的類型並使其可訪問。

編輯:

控制是不公開的

假設您已經設置的主屬性在你的頁面指令:

<%@ Page MasterPageFile="~/MyMaster.master" ... 

奇怪的是,你可能不需要真正的控制。相反,你需要在主頁面設置一些東西。我只是使用一個內部方法做你需要做的事情:

public partial class MyMaster: MasterPage 
{ 
    internal void SetTheFoo(string foo) 
    { 
     this.WhateverControl.Text = foo; 
    } 

    //etc... 
} 

然後,從您的網頁,只是把它:

Master.SetTheFoo("Foo"); 

如果你仍然需要去控制,那麼在你的母版頁中,你可以添加一個暴露你的模式彈出式擴展器的公共屬性。

public AjaxControlToolkit.ModalPopupExtender MyModalPopup 
{ 
    get { return this.TheNonPublicModalPopupExtenderControl; } 

} 
+0

控制是不公開的 – 2012-02-23 23:46:02

+0

我已經更新了我的代碼,我可以訪問PopupExtender,但我無法更改標籤文本屬性,你知道如何將文本更改爲我的消息 – ONYX 2012-02-24 01:05:12

0

如果你的網頁是你的母版頁的子

試試這個:

AjaxControlToolkit.ModalPopupExtender popup = (AjaxControlToolkit.ModalPopupExtender)Page.Master.FindControl("ModalPopupExtender2"); 

問候