Сессия не запоминает установленное значение - PullRequest
1 голос
/ 18 мая 2011

Я пытаюсь передать данные между двумя страницами, используя состояние сеанса в 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] + "\'";
}

Но я получаю исключение нулевой ссылки. Кроме того, я установил инициализацию Session для события Page_Load, и там Session сохраняется, и все работает просто отлично. Я имею в виду:

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

Это страница, которая отправляет информацию.

Если вам нужно больше источника или информации, просто запишите это. Будет предоставлено как можно скорее.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

На самом деле это не проблема с вашей сессией.DataItem строки доступен только во время события RowDataBound.Установите точку останова в вашем методе GridViewEmployees_SelectedIndexChanged и проверьте значение элемента DataItem в ближайшем окне.Это будет ноль.

1 голос
/ 18 мая 2011

Два наиболее вероятных виновника: состояние сеанса отключено (EnableSessionState="false") или cookie отключены, и вы не используете сеансов без cookie .

...