2015-07-11 118 views
0

我有兩個WebUserControl用戶控制錯誤對象引用未設置爲對象的實例?

1. UC_1.axcx 
2. UC_2.ascx 

我想從我的UC_1.axcx.cs訪問UC_2.ascx.cs方法。以下是 UC_1.ascx.cs方法。

protected void Page_Load(object sender, EventArgs e) 
{ 
    UC_2 objUC = new UC_2(); 
    objUC.assignName("123'); 
} 

UC_2.ascx.cs

public string assignName(string nameParam) 
{ 
    TextBox1.Text = nameParam; //Here i am getting object null error. 
    retrun "access UC_2 successfully."; 
} 

雖然從UC_1訪問UC_2方法,我得到:

對象引用不設置爲一個對象的一個​​實例。

如何解決這個問題?

+0

誰創建了TextBox1?在任何情況下,建議閱讀[什麼是NullReferenceException,如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-它) – Steve

+0

在我的UC_2.ascx我有。所以我想要替換值「test」tp「123」,同時通過UC_1賦值。那次我得到空引用問題。 – Dhamo

+0

我無法理解你的推薦鏈接。您能否幫我解決 – Dhamo

回答

2

您需要在UC_1.ascx中註冊UC_2.ascx而不是實例化它。在UC_1.ascx

<%@ Register Src="~/UC_2.ascx" TagPrefix="uc1" TagName="UC_2" %> 

<uc1:UC_2 runat="server" ID="UC_2" /> 

而且在後面的變化Page_LoadUC_1這樣的代碼:

protected void Page_Load(object sender, EventArgs e) 
{ 
    UC_2.assignName("123"); 
} 

編輯:動態調用UC2方法,無需登記在ascx,試試這個:

var Uctrl = (UC_2)LoadControl("~/UC_2.ascx"); 
Controls.Add(Uctrl); 
Uctrl.assignName("123"); 
+0

如果可以動態調用UC2方法而不註冊ascx。 – Dhamo

+0

好吧,現在檢查我的更新答案。 –

相關問題