用户控制错误对象引用未设置为对象的实例?
问题描述:
我有两个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
方法,我得到:
对象引用不设置为一个对象的一个实例。
如何解决这个问题?
答
您需要在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_Load
的UC_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
好吧,现在检查我的更新答案。 –
谁创建了TextBox1?在任何情况下,建议阅读[什么是NullReferenceException,如何解决它?](http://*.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-它) – Steve
在我的UC_2.ascx我有 。所以我想要替换值“test”tp“123”,同时通过UC_1赋值。那次我得到空引用问题。 –
Dhamo
我无法理解你的推荐链接。您能否帮我解决 – Dhamo