NullReferenceException - 不知道为什么初始化对象重置为空
问题描述:
好的,我在我的代码后面的文件中有以下类。它是一个非常简单的页面,只需要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对象不存在于该函数中?
答
单击按钮时,您从不初始化该变量!
对页面的每个请求都会创建一个新的页面实例。一般来说,您在上次请求期间所做的任何操作都不会影响当前的请求。特别是,您在第一个请求上设置了myIssue
字段,但在第二个请求上,IsPostBack
为true,因此您的初始化代码不会执行。
呃,完全钉了它,没有意识到在其他页面上我的对象被初始化之前!IsPostBack的东西。谢谢。 – Josh 2011-12-19 22:01:34