2017-08-02 19 views
0

我正在测试一个webform来保存文本框中的字符串。当我按下编程的按钮将信息保存到数组中时,程序停止运行。这里的错误:C#ASP.NET Webforms:TextBox(Not Textbox.Text)即将出现null。你如何解决这个问题?

System.NullReferenceException occurred HResult=0x80004003 Message=Object reference not set to an instance of an object. Source=TS_Webform StackTrace: at TS_Webform.Forms.Login.registerUser() in C:\Users\k20\Source\Repos\TS_Webform\TS_Webform\Forms\Login.aspx.cs:line 105 at TS_Webform.Forms.Register2.Button1_Click(Object sender, EventArgs e) in C:\Users\k20\Source\Repos\TS_Webform\TS_Webform\Forms\Register2.aspx.cs:line 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文本框,报关行许多东西从保护公共和公共静态,都没有工作。

+0

可能重复[什么是NullReferenceException,以及如何解决它?](https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix -it) –

+0

@Tetsuya Yamamoto。我不认为这里适用一个普通的nullReference Exception。这是一个控制。 –

+0

首先删除Register2.aspx中的控件。之后,采取新的文本框。然后转到Register2.aspx.designer.cs文件并更改“private System.Windows.Forms.TextBox textBox1;”到“public System.Windows.Forms.TextBox textBox1;” –

回答

0

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

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

+0

@ John Wu那没用。 –

0

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