C#ASP.NET Webforms:TextBox(Not Textbox.Text)出现null。你是如何解决这个问题的?

时间:2017-08-02 03:46:51

标签: c# asp.net nullpointerexception webforms textbox

我正在测试一个webform来保存文本框中的字符串。当我按下编程按钮将信息保存到阵列时,程序停止运行。这是错误:

  

发生了System.NullReferenceException    的HResult = 0x80004003         Message =对象引用未设置为对象的实例。         来源= TS_Webform         堆栈跟踪:         在TS_Webform.Forms.Login.registerUser()中       C:\ Users \用户K20 \源\回购\ TS_Webform \ TS_Webform \形式\ Login.aspx.cs:线   105         在TS_Webform.Forms.Register2.Button1_Click(Object sender,EventArgs e)中       C:\ Users \ k20 \ Source \ Repos \ TS_Webform \ TS_Webform \ Forms \ Register2.aspx.cs:第25行

这是消息指示我的方法:

   public static void registerUser()
   {
        User newUser = new User();
        Register2 register2 = new Register2();
        newUser.strName = register2.TextBox1.Text;//Stops here 
        newUser.strPW = register2.TextBox2.Text;
        //newUser.strEmail = textBox3.Text;
        newUser.strPhone = register2.TextBox3.Text;
        newUser.strHas = register2.TextBox4.Text;
        newUser.strNeeds = register2.TextBox5.Text;
        userArray[I(userArray)] = newUser;
   }

我尝试了很多东西,例如将Register2.aspx.designer.cs上的Textbox声明行从protected更改为public和public static,但两者都没有。

2 个答案:

答案 0 :(得分:0)

当您的代码与Web表单标记不同步时,会发生这种情况。对于标记中的每个控件,应该在类后面的代码中有受保护的成员;如果它们没有正确匹配,你可以获得一个孤立的控件,或者该成员可以返回null。

解决此问题的最简单方法是完全删除控件(从标记和后面的代码中删除)并使用表单设计器再次添加它。

答案 1 :(得分:0)

我解决了这个问题。 registerUser()方法位于另一个页面Login.aspx.cs上。我将该方法移动到Register2.aspx.cs。无论出于何种原因,当Register2上的按钮从Login.aspx.cs调用该方法时,它会将文本框重置为null,或者该方法实际上没有响应Register2打开/加载的事实。