我正在测试一个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,但两者都没有。
答案 0 :(得分:0)
当您的代码与Web表单标记不同步时,会发生这种情况。对于标记中的每个控件,应该在类后面的代码中有受保护的成员;如果它们没有正确匹配,你可以获得一个孤立的控件,或者该成员可以返回null。
解决此问题的最简单方法是完全删除控件(从标记和后面的代码中删除)并使用表单设计器再次添加它。
答案 1 :(得分:0)
我解决了这个问题。 registerUser()方法位于另一个页面Login.aspx.cs上。我将该方法移动到Register2.aspx.cs。无论出于何种原因,当Register2上的按钮从Login.aspx.cs调用该方法时,它会将文本框重置为null,或者该方法实际上没有响应Register2打开/加载的事实。