![]() |
|
Модераторы: gambit |
![]()
|
|
| GRIENDERS |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.2.2007 Репутация: 1 Всего: 1 |
Как создать глобальную переменную в
Как создать глобальную переменную в ASP.NET? Я пишу так: добавил класс Class1 в папку App_Code, в Global.asax написал так:
Как теперь получить доступ к переменной class1 на странице Default.aspx? Так не катит
Статической переменная class1 быть не должна |
||||
|
|||||
| Mymik |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
GRIENDERS, Судя по тому, что у тебя определение идет в Application_Start то я думаю тебе лучше всего сделать сразу переменную static для того чтобы она была доступна всем пользователям, а не только тому, кто первый вошел на сайт.
А для того чтобы она была доступна везде. Тебе нужно будет обрамить твой Global.asax в какой-нибудь класс с пространством имен. Я сделал вот так вот -->>
И получается, чтобы обратиться тебе надо будет написать -->>
-------------------- |
||||||
|
|||||||
| tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
для "глобальных" (т.е. доступных на уровне приложения) переменных существуют хранилища:
- HttpApplicationState (доступно на странице через Page.Application) - устаревший метод хранения - Cache (Page.Cache) - рекомендуемый метод хранения также эти объекты доступны через контекст. Юзать нужно их.
Но если ты хочешь именно через переменную в global.asax, то на странице доступ к ней можно будет получить через префикс ASP.global_asax и только если переменная будет статической. Такова селяви.
P.S. пока писал, увидел пост Mymik-а. Но все равно запостить решил. -------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
| GRIENDERS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.2.2007 Репутация: 1 Всего: 1 |
Не в Application_Start, а до него. И переменная должна быть для каждого пользователя разная. Статическая не катит. tol05, тоже катит, мне нужна переменная, которая будет создаваться на другой странице по определенному условию (т е ее может и не быть), а испоьзоваться будет например на Default.aspx и др. страницах |
|||
|
||||
| Mymik |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
Правда в asp.net есть Application_Init думаю он запускается перед Application_Start. Ну а т.к. тебе нужно для каждого пользователя своя переменна... я думаю лучше воспользоваться Session... В Session_Start засовывать переменную в какой-нибудь ключ типа
А в коде на странице писать
поглащение null тут как раз для того, чтобы взять переменную по умолчанию. А на другой странице определена или нет, это пофиг
-------------------- |
||||||
|
|||||||
| GRIENDERS |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.2.2007 Репутация: 1 Всего: 1 |
Я же говорю
Так что Session_Start тоже не катит. А какое время жизни у сессии? |
||||
|
|||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
GRIENDERS, так ты ж показывал исходники Global.asax вот я и думал, что оттуда надо скакать
Ну коль на другой странице, так на другой странице. А то, Session не работает что-ли на другой странице ??? у меня другая информация по этому поводу... Создай объект, засунь его в сессию и работай с ним. А когда ты будешь доставать данные из сессии, то тебе будут возвращать null. Просто поставь проверки. А время жизни сессии либо 20 минут (по умолчанию) либо настройки из web.config. Либо можешь руками настраивать в IIS -------------------- |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
GRIENDERS, на другой странице, или нет - это нужно говорить сразу, иначе трудно понять, что значит "глобальная". Так бы и сказал - "переменная, доступная всему приложению", а так - только запутал нас обоих.
Юзай Cache или Application. Я уже говорил. Только с кэшом нужно еще не забыть настроить время устаревания на "никогда". По поводу того, что переменная "может создастся, а может и нет" : на странице, которая "может требует ее, а может и нет" Session не нужно использовать. Тогда будет еще меньше "глобальности". -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| D_F_V |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 27.3.2007 Где: Vladivostok Репутация: нет Всего: 1 |
как вариант, использовать профили...
Это сообщение отредактировал(а) D_F_V - 8.10.2007, 01:00 |
||||
|
|||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
tol05, Он говорил, что для каждого пользователя должна быть своя переменная ;)
-------------------- |
|||
|
||||
| GRIENDERS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.2.2007 Репутация: 1 Всего: 1 |
Че-то я не понял, тут есть какое-нить верное решение или нет?
|
|||
|
||||
| Mymik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1474 Регистрация: 12.5.2006 Где: Lamer-центер Репутация: 50 Всего: 78 |
GRIENDERS, Session используй. Либо если у тебя есть Profile то лучше это дело там хранить.
-------------------- |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Блин, просмотрел... GRIENDERS, согласен с Mymik-ом (в конце-концов, не ссориться же с модератором, правда? Делай через сессию. Профиль - не советую. Ты ее хранить для каждого юзера (вечно) не собираешься ведь? -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| GRIENDERS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.2.2007 Репутация: 1 Всего: 1 |
Всем спасибо, разобрался
|
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Подниму тему, т.к. она похожа на мой случай.
Необходимо иметь массив строковых переменных, доступных глобально, на всех страницах сайта. Каким образом это лучше сделать? |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |