На заметку: могу я настоятельно рекомендовать вам НЕ использовать состояние сеанса.
Если вы не используете его в качестве хранилища, где данные кэшируются для текущего пользователя, который вы можете получить обратно в в любое время , например, из. база данных.
Если нет, "сессия" вернется и укусит вас. В какой-то момент появится пользователь, который оставит браузер открытым на более длительное время, чем ваша сессия (например, он получит телефонный звонок, поспешно выйдет на ланч, на встречу…). И когда они возвращаются, они хотят завершить то, что они делают. И если вы не можете восстановить все свои данные сеанса обратно в этот момент, вам придется либо перенаправить своего пользователя, чтобы начать сначала (очень раздражает ваших пользователей), либо вы потеряете некоторую информацию (очень смущающую), либо худшее случай и наиболее распространенный случай: ваше приложение больше не будет работать и зависать (просто: очень плохо).
Это лучший подход для определения небольших сериализуемых объектов, которые хранят ваше состояние (параметры запроса, выбранные элементы и т. Д.) И используют ASP.NET Viewstate для сохранения этого состояния между запросами страниц. Обратите внимание, что большинство элементов управления ASP.NET уже используют viewstate для хранения своих данных. Затем отключите Viewstate ваших сеток на странице, чтобы значительно сократить объем данных в вашем viewstate, и запрашивайте данные при каждом запросе (здесь можно безопасно использовать кэш сеанса или ASP.NET для повышения производительности вашего приложения). , У вас будет гораздо более надежное и гораздо более масштабируемое приложение.
Это больше работы, но она окупится очень быстро и во много раз.