2012-05-12 5 views
1

Возможно ли создать переменную, которая является глобальной для каждого сеанса в ASP.NET? Обычно я делаю это с сессией:Создание глобальной переменной ASP Session Session?

Session("my_variable") = 10 

Но это требует литье это каждый раз, когда я хочу использовать его так:

Dim my_variable as String = CInt(Session("my_variable")) 

Я вижу, что если я создаю модуль, я могу создавать переменные, которые публичный для всего проекта для каждой сессии ... Я также вижу, что Global.asax позволяет использовать те же функции, что и модули. Я бы предпочел не писать модуль ... есть ли способ сделать это в Global.asax или какой-нибудь другой метод лучшей практики? Или переменные сеанса - лучший способ?

ответ

2

Создайте класс-оболочку для переменного, как этого

public class SessionVariables 
{ 

    public static int MyVariable 
    { 
    get{ return if(Session["my_variable"] != null) (int)Session["my_variable"]; else 0;} 
    set {Session["my_variable"] = value;} 
    } 


} 

И использовать как

SessionVarible.MyVariable = 7; 

int p = SessionVarible.MyVariable + 3; 
1

Если вы просто хотите сохранить/восстановить данные в области сеанса, затем Session объекта это путь. HttpModules полезны для реализации некоторой функции, привязанной к конкретным точкам в конвейере запросов ASP.NET (например, вы хотите добавить ведение журнала на запросы аутентификации). Global.asax позволяет делать аналогичные действия и, вероятно, достаточно хорош для ваших целей (просто выполните мероприятие, на которое вы хотите настроить таргетинг в global.asax).

Если вы беспокоитесь о боксе/распаковке от объекта, то мне нравится идея hkutluay об использовании класса-оболочки, который скрывает приведение.

Смежные вопросы