NullReferenceException -不能弄清楚为什么初始化的对象重置为空

本文关键字:对象 初始化 不能 弄清楚 为什么 NullReferenceException | 更新日期: 2023-09-27 18:18:15

好的,我的代码文件中有以下类。这是一个非常简单的页面,只是获取TestIssue对象,将条目加载到一个文本框中进行编辑,然后当单击save时,它调用更新数据库中TestIssue的函数。

下面是代码

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对象不存在于该函数中吗?

NullReferenceException -不能弄清楚为什么初始化的对象重置为空

当按钮被单击时,您永远不会初始化该变量!

对该页的每个请求都创建该页的一个新实例。一般来说,您在前一个请求期间所做的任何操作都不会对当前请求产生任何影响。特别是,您在第一个请求中设置了myIssue字段,但在第二个请求中,IsPostBack为true,因此不会执行初始化代码。