会话不记得设置值

本文关键字:设置 记得 会话 | 更新日期: 2023-09-27 17:56:44

我正在尝试使用 ASP.NET 中的会话状态在两个页面之间传递数据。需要传递的数据来自 GridView 的单元格。因此,在 SelectedIndexChanged 事件上,我存储的数据如下:

protected void GridViewEmployees_SelectedIndexChanged(object sender, EventArgs e)
{
        Session["Name"] =   
           this.GridViewEmployees.Rows[GridViewEmployees.SelectedIndex].DataItem;
}

然后,我想在另一个页面中使用会话的内容。代码:

protected void Page_Load(object sender, EventArgs e)
{
        string name = (string)(Session["Name"]);
        string[] names = name.Split(' ');
        this.EntityDataSourceNorthwind.Where = 
           "it.[FirstName] = ''" + names[0] + 
           "'' AND it.[lastName] = ''" + names[1] + "''";
}

但是我得到一个空引用异常。此外,我已经在 Page_Load 事件上设置了会话初始化,并且存储了会话,一切正常。我的意思是:

protected void Page_Load(object sender, EventArgs e)
{
        if (Session["Name"] == null)
        {
            Session["Name"] = "Andrew Fuller";
        }
}

这是在发送信息的页面中。

如果您需要更多来源或信息,只需将其写下来即可。它将尽快提供。

提前感谢!

会话不记得设置值

这实际上不是您的会话的问题。 行的数据项仅在 RowDataBound 事件期间可用。 在GridViewEmployees_SelectedIndexChanged方法中设置断点,并在即时窗口中检查 DataItem 的值。 它将为空。

两个最有可能的罪魁祸首是 - 会话状态被禁用 ( EnableSessionState="false" ),或者 cookie 被禁用并且您没有使用无 cookie 会话。