我试图在ASP.NET中使用Session State在两个页面之间传递数据。需要传递的数据来自GridView的Cell。因此,在SelectedIndexChanged事件中,我存储的数据如下:
protected void GridViewEmployees_SelectedIndexChanged(object sender, EventArgs e)
{
Session["Name"] =
this.GridViewEmployees.Rows[GridViewEmployees.SelectedIndex].DataItem;
}
然后,我想在另一个页面中使用Session的内容。代码:
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事件上设置了Session初始化,并且存储了Session,一切正常。我的意思是:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Name"] == null)
{
Session["Name"] = "Andrew Fuller";
}
}
这是在发送信息的页面中。
如果您需要更多来源或信息,请将其写下来。它将尽快提供。
提前致谢!
答案 0 :(得分:2)
这实际上不是您的会话的问题。行的DataItem仅在RowDataBound事件期间可用。在GridViewEmployees_SelectedIndexChanged方法中设置断点,并在即时窗口中检查DataItem的值。它将为空。
答案 1 :(得分:1)
两个最有可能的罪魁祸首是 - 会话状态被禁用(EnableSessionState="false"
),或者Cookie被禁用而你没有使用cookieless sessions。