【问题标题】:User Control error Object reference not set to an instance of an object?用户控制错误对象引用未设置为对象的实例?
【发布时间】:2015-07-11 10:49:13
【问题描述】:

我有两个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 方法时,我得到:

对象引用未设置为对象的实例。

如何解决这个问题?

【问题讨论】:

  • 谁创建了 TextBox1?无论如何,推荐阅读What is a NullReferenceException and how do I fix it?
  • 在我的 UC_2.ascx 我有 。所以我想在通过 UC_1 分配值时替换值“test”tp“123”。那个时候我遇到了空引用问题。
  • 我无法理解您推荐的链接。你能帮我解决吗

标签: c# asp.net webforms


【解决方案1】:

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

UC_1 后面的代码中更改Page_Load 如下:

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");

【讨论】:

  • 如果可以动态调用UC2方法而不在ascx中注册。
猜你喜欢
  • 2011-07-09
  • 2012-08-31
  • 2011-11-21
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
相关资源
最近更新 更多