用户控制错误对象引用未设置为对象的实例?

问题描述:

我有两个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://*.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

您需要在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

好吧,现在检查我的更新答案。 –