2011-12-19 100 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

相关问题