Допустим, вы создаете что-то простое, например форму ввода данных / CRUD для работы с объектом под названием Customer. Возможно, вы передаете CustomerID через состояние сеанса.
Я склонен писать много стандартного кода для обработки этой переменной Session определенным образом. Цели немного различаются, но, как правило, такие вещи, как:
- Избегайте загромождения основного потока страницы с помощью кода
- Умно обрабатывать кнопку возврата
- Удалите переменную из сеанса и сохраните ее в ViewState ASAP
- Код защиты для ситуаций сбоя, когда состояние не передается или теряется
У вас есть лучшая практика для решения этой ситуации? Есть ли в вашем стеке классы, которые каждый раз справляются с этим? Вы просто вызываете переменные Session напрямую? Используете ли вы зашифрованный QueryString и полностью избегаете переменных Session в этой ситуации, чтобы сделать кнопку возврата немного лучше?
В последнее время я использую свойства с переменными сеанса. Вот простой пример, который я только что скомбинировал, хотя имейте в виду, что этот пример не слишком терпим к кнопке «Назад»:
Private ReadOnly Property CustomerID() As Integer
Get
If Me.ViewState(Constants.CustomerID) Is Nothing Then
If Me.Session(Constants.CustomerID) Is Nothing Then
Throw New ApplicationException("CustomerID was not persisted.")
Else
Me.ViewState(Constants.CustomerID) = Me.Session(Constants.CustomerID)
Me.Session.Remove(Constants.CustomerID)
End If
End If
Return Me.ViewState(Constants.CustomerID)
End Get
End Property
Итак, как ваш магазин справляется с этим? Спасибо!