C# ASP.Net:GridView控件和组合框问题第2部分

C# ASP.Net:GridView控件和组合框问题第2部分,c#,asp.net,C#,Asp.net,这是以下方面的后续行动: 我已经按照kd7的回答实现了我的代码,但是我得到了一个“System.NullReferenceException:对象引用未设置为对象的实例”。我将代码简化如下: 单击按钮的事件处理程序: protected void btnSubmit_Click(object sender, EventArgs e) { ViewState["MyKey"] = "Test"; } 现在加载的页面有: protected void Page_Load(object se

这是以下方面的后续行动:

我已经按照kd7的回答实现了我的代码,但是我得到了一个“System.NullReferenceException:对象引用未设置为对象的实例”。我将代码简化如下:

单击按钮的事件处理程序:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    ViewState["MyKey"] = "Test";
}
现在加载的页面有:

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        txtDisplay.Text = ViewState["MyKey"].ToString();
    }
}
我的问题是:为什么ViewState[“MyKey”]返回为null并导致null引用异常

请注意,上面的代码只是我尝试执行的操作的简化版本。请参阅此问题第一行中的上一个问题,以查看完整的详细信息。


有什么建议吗?

因为在asp页面生命周期中,页面加载是在执行回发事件之前调用的

那么:-

protected void btnSubmit_Click(object sender, EventArgs e)
{
    txtDisplay.Text = "Test";
}

NullReferenceException可能与您试图在设置ViewState[“MyKey”]值之前获取该值有关。首先尝试验证:

if (ViewState["MyKey"] != null)
{
    txtDisplay.Text = ViewState["MyKey"].ToString();
}
else
{
    //manage the situation accordingly
}

希望这有帮助

不,因为代码只是一个帮助我做其他事情的示例。我需要能够从用户选择的组合框中获取值,并在Page_Load事件中处理该值。那么你为什么不问你想要回答的问题呢?为什么投票否决我正确回答你提出的问题?公平地说,我的问题是为什么我会得到一个NullReferenceException。你的回答没有回答这一点,这就是为什么我投了反对票。我的第一行提到这是对上一个问题(包含所有细节)的跟进,我提到我简化了代码。这就是为什么我投票否决了您的答案,因为它是不正确的。ViewState[“MyKey”]返回为null并导致NullReference异常,因为page_load事件是在button submit事件之前执行的,因此尚未设置ViewState[“MyKey”]。这是我的回答。至于你想做什么,最初的答案是可以的,只是不需要设置和使用viewstate:让.Net在combobox上为你做(enableviewstate=true),在回发时直接获取combobox selectedvalue。