2011-12-19 72 views
2

好的,我在我的代碼後面的文件中有以下類。它是一個非常簡單的頁面,只需要TestIssue對象,將條目加載到用於編輯條目的文本框中,然後在單擊save時調用更新數據庫中TestIssue的函數。NullReferenceException - 不知道爲什麼初始化對象重置爲空

這是代碼。

public partial class Issues_Edit : System.Web.UI.Page 
    { 
     protected string filter_test_director; 
     protected TestIssue myIssue; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       string id = Request.QueryString["id"]; 

       id = "1358"; 
       myIssue = new TestIssue(Convert.ToInt32(id)); 

       issue_date.Text = myIssue.Entry_Date.ToString(); 
       issue_author.Text = myIssue.Author.Full_Name_RFL; 

       issue_text.Text = myIssue.Entry.Replace("<br>", "\n"); 
       issue_text.Height = 150; 
       issue_text.Width = 400; 

      } 

     } 

     protected void SaveButton_Click(object sender, EventArgs e) 
     { 
      myIssue.Entry = issue_text.Text; 

      int update = TestIssueDB.UpdateIssue(myIssue); 

      if (update == 1) 
      { 
       //Response.Redirect("program.aspx?p=" + myIssue.Program_ID); 
      } 
      else 
      { 
       top_message.Text = "Error Updating Issue Text"; 
      } 

     } 

    } 

現在的問題是,當調用Save函數時,它會在myIssue對象上出現nullreferenceexception錯誤。我不太確定這是爲什麼,因爲這與我在其他頁面上處理其他對象的方式完全相同,對象在page_load之上聲明,在page_load內初始化,然後在其他函數中修改。

任何想法爲什麼myIssue對象不存在於該函數中?

回答

6

單擊按鈕時,您從不初始化該變量!

對頁面的每個請求都會創建一個新的頁面實例。一般來說,您在上次請求期間所做的任何操作都不會影響當前的請求。特別是,您在第一個請求上設置了myIssue字段,但在第二個請求上,IsPostBack爲true,因此您的初始化代碼不會執行。

+0

呃,完全釘了它,沒有意識到在其他頁面上我的對象被初始化之前!IsPostBack的東西。謝謝。 – Josh 2011-12-19 22:01:34

相關問題