2017-08-02 44 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打開/加載的事實。