Usercontrol findcontrol属性抛出对象引用未设置为对象的实例?

时间:2015-07-20 06:45:59

标签: c#

我有两个usercontrol UC_1.ascx& Uc_2.ascx。

我尝试绑定来自UC_1的UC_2文本框值。

以下是我的代码:

 System.Web.UI.UserControl UserControl1 = (System.Web.UI.UserControl)Page.FindControl("UC_2");
if (UserControl1 != null)
{
    TextBox txt = UserControl1.FindControl("txtTest") as TextBox; //thwon object null reference error.
    txt.Text = "test123123123213";
}

但是我在调​​用UserControl1对象时遇到错误。

错误如:

  

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

2 个答案:

答案 0 :(得分:0)

1)您需要检查UserControl1是否为空。

2)如果不是,请检查UserControl1.FindControl("txtTest") as TextBox是否等于null。

除了表达式变量仅被计算一次之外,代码等效于以下表达式。 表达式为type ? (type)expression : (type)null,问题出在您尝试投射的类型中。

答案 1 :(得分:-1)

替换 TextBox txt = UserControl1.FindControl("txtTest") as TextBox;

通过

if(UserControl1.FindControl("txtTest") != null)
{
TextBox txt = UserControl1.FindControl("txtTest") as TextBox; 
txt.Text = "test123123123213";
}

FindControl无法找到txtText,请记住它只搜索容器的直接子节点。