2011-12-19 10 views
2

大丈夫です。コードビハインドファイルに次のクラスがあります。非常に単純なページで、TestIssueオブジェクトを取得し、エントリを編集するためのテキストボックスにエントリをロードし、saveをクリックすると、データベース内のTestIssueを更新する関数を呼び出します。NullReferenceException - 初期化されたオブジェクトがnullにリセットされる理由を理解できません。

ここにコードがあります。

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"; 
      } 

     } 

    } 

今の問題は、保存機能がmyIssueオブジェクトのとNullReferenceExceptionと、そのエラーが呼び出されたときということです。私は本当にこれはなぜか分かりません。なぜなら、他のいくつかのページで他のオブジェクトを処理しているpage_loadの上にオブジェクトが宣言され、page_load内で初期化され、他の関数で変更されたオブジェクトと同じ方法です。

なぜmyIssueオブジェクトがその関数に存在しないのでしょうか?

答えて

6

ボタンをクリックしたときに、その変数を初期化することはありません。

ページへのリクエストごとに、ページの新しいインスタンスが作成されます。一般的に、以前のリクエスト中に行ったことは、現在のリクエストに何の影響も与えません。具体的には、最初の要求でmyIssueフィールドを設定しますが、2番目の要求ではIsPostBackがtrueであるため、初期化コードは実行されません。

+0

ugh、それは完全に釘付け、私のオブジェクトが!IsPostBackの前に初期化されている他のページで実現していませんでした。ありがとうございました。 – Josh

関連する問題