Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Народ Подскажите пожалуйста? 
:(
    Опции темы
JaguarSmith
Дата 16.1.2005, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



В моем небольшом пректе(веб-страничка) есть код, который должон использоваться на каждой странице проекта, но я так и не могу разобраться как мне сделать эту процедуру доступной из отдельного модуля... приходится вставлять его в обработчик каждой страницы что и неудобно и не правильно... smile

пытался засунуть его в отдельный модуль с объявлением прцедуры как Public но тогда он говорит что request, response и session являются "необьявленными"...

хорошо обьявляю :
Код

       Dim session As System.Web.SessionState.HttpSessionState
       Dim response As System.Web.HttpResponse
       Dim request As System.Web.HttpRequest


компилятор это "съедает" но .NET Framework выдаёт:
В экземпляре объекта не задана ссылка на объект.

Что делать то?
И как правильно?

Помогите чайнику -я давно не програмил а тут уселяся сразу за vb.NET... smile

приводю мой код:

Код

Sub avatar_cookieng()


       Dim Cookieing As HttpCookie

       Dim p, ins, k, v As String

       Cookieing = request.Cookies.Item("UserInfo")


       Try
           ins = Cookieing.Values("Registered")
       Catch S As System.NullReferenceException

           session("Return2") = CStr(request.Url.AbsoluteUri)

           response.Redirect("Detect.aspx")


       End Try

       session("UID") = Cookieing.Values("UserID")
       session("UMail") = Cookieing.Values("UserMail")
       session("IsRegd") = Cookieing.Values("Registered")


       If Cookieing.Values("FloatHead") = "True" Then ' Определяет плавает ли заголовок
           session("FloatHead") = "True"
           session("BodyStyle") = "scrollbar-face-color : #990099; scrollbar-arrow-color : Yellow; scrollbar-3dlight-color: #9400D3; scrollbar-base-color: #990099;" _
                                + " scrollbar-track-color: #B875D8; scrollbar-shadow-color: #9400D3; scrollbar-highlight-color: #8B008B; page: inherit; " _
                                + "scrollbar-darkshadow-color: Black; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; font-size : 12px; overflow: hidden;"
           session("MainStyle") = "scrollbar-face-color : #990099; scrollbar-arrow-color : Yellow; scrollbar-3dlight-color: #9400D3; scrollbar-base-color: #990099;" _
                                + " scrollbar-track-color: #B875D8; scrollbar-shadow-color: #9400D3; scrollbar-highlight-color: #8B008B; ime-mode: active; bottom: auto; page: inherit;" _
                                + "scrollbar-darkshadow-color: Black; position: relative; top: 2px; left: 0px; width: 100%; height: inherit; overflow: auto; text-align: center; quotes: inherit;"
       Else
           session("FloatHead") = "False"
           session("BodyStyle") = "scrollbar-face-color : #990099; scrollbar-arrow-color : Yellow; scrollbar-3dlight-color: #9400D3; scrollbar-base-color: #990099;" _
                                + " scrollbar-track-color: #B875D8; scrollbar-shadow-color: #9400D3; scrollbar-highlight-color: #8B008B; " _
                                + "scrollbar-darkshadow-color: Black; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; font-size : 12px; overflow: auto;"
           session("MainStyle") = "scrollbar-face-color : #990099;  scrollbar-arrow-color : Black; text-align: center;"
       End If

       If Cookieing.Values("TextWidth") <> Cookieing.Values("null") Then ' Определяет плавает ли заголовок
           session("TextWidth") = Cookieing.Values("TextWidth")
       Else
           session("Return2") = CStr(request.Url.AbsoluteUri)
           response.Redirect("Detect.aspx")
       End If

       Select Case Val(Cookieing.Values("ResX"))
           Case Is < 1600
               session("BodyStyleFile") = "Texts_0.css"
           Case Is >= 1600
               session("BodyStyleFile") = "Texts_2.css"
       End Select

   End Sub

PM MAIL YIM   Вверх
Kurt
Дата 17.1.2005, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



Самое простое, на мой взгляд, решение - передавать эти несчастные session, response и request как входне параметры в Вашу процедуру. По ссылке, конечно же.
Т.е. не объявлять их в теле процедуры как
Код

Dim session As System.Web.SessionState.HttpSessionState
Dim response As System.Web.HttpResponse
Dim request As System.Web.HttpRequest


а просто описать Вашу процедруру как

Код

Sub avatar_cookieng(session As System.Web.SessionState.HttpSessionState, response As System.Web.HttpResponse,
request As System.Web.HttpRequest)

      Dim Cookieing As HttpCookie
...


Если не ошибаюсь, в VB.NET для передачи по ссылке не требуется дополнительных указаний в объявлении процедуры..
Ну, а при обработчике просто вызывайте эту процедуру с параметрами.
Должно помочь.


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
arilou
Дата 17.1.2005, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 7
Всего: 61



Цитата(Kurt @ 17.1.2005, 04:10)
Если не ошибаюсь, в VB.NET для передачи по ссылке не требуется дополнительных указаний в объявлении процедуры..

Надо объявлять вот так:

Код

Sub avatar_cookieng(ByRef session As System.Web.SessionState.HttpSessionState, ByRef response As System.Web.HttpResponse,
ByRef request As System.Web.HttpRequest)


Но можно поступить по другому. Текущий HttpContext содержит в себе статический (Shared) член Current, к которому можно обратиться из любого места программы, естественно, при условии, что в проекте есть ссылка на System.Web. Данный класс дает доступ к Request, Response, Session через одноименные свойства.



--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
JaguarSmith
Дата 17.1.2005, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



Неа так не работает... smile
Или я опять чтото не так делаю...
Сделал новый проект... там обьявил:

Код

Module MyCls


   Public Sub say(ByRef session As System.Web.SessionState.HttpSessionState, ByRef response As System.Web.HttpResponse, ByRef request As System.Web.HttpRequest)


       session("hello") = "hello my friend"
       response.Write("hi")

   End Sub

End Module



Из главной формы вызываю SAY()
Не прокатывает - требует параметров в результате приходится вот так:
Код

       Dim s As System.Web.SessionState.HttpSessionState
       Dim rs As System.Web.HttpResponse
       Dim rq As System.Web.HttpRequest

       say(s, rs, rq)


И опять та же фигня... smile
PM MAIL YIM   Вверх
arilou
Дата 17.1.2005, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 7
Всего: 61



В чем проблема?

Код

Public Sub Say()
  HttpContext.Current.Session("la") = "la"
  Dim var as String = HttpContext.Current.Request("var")
  HttpContext.Response.Redirect("SuperPage.aspx")
End Sub

Добавлено @ 16:05
Сейчас перечитал твой код:

Цитата(JaguarSmith @ 17.1.2005, 15:55)
Не прокатывает - требует параметров в результате приходится вот так:

Код

Код

      Dim s As System.Web.SessionState.HttpSessionState
      Dim rs As System.Web.HttpResponse
      Dim rq As System.Web.HttpRequest

      say(s, rs, rq)

Ты же переменные не инициализируешь, просто Nothing'и передаешь. Надо хотя бы так:

Код

say(HttpContext.Current.Session, HttpContext.Current.Response. HttpContext.Current.Request)



--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
JaguarSmith
Дата 17.1.2005, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



smile УРРЯЯЯЯ!!! ЗАРАБОТАЛО!!!!

Спасибо большое!!! smile
PM MAIL YIM   Вверх
arilou
Дата 17.1.2005, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 7
Всего: 61



Цитата(JaguarSmith @ 17.1.2005, 18:36)
УРРЯЯЯЯ!!! ЗАРАБОТАЛО!!!!
Спасибо большое!!! 


Нн за что smile Так в чем именно было проблема?


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
JaguarSmith
Дата 17.1.2005, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 16.1.2005

Репутация: нет
Всего: 1



smile Дык я в ту функцию которую выложил вначале просто вставил код:

Код

       
       Dim Session As System.Web.SessionState.HttpSessionState = HttpContext.Current.Session
       Dim Response As System.Web.HttpResponse = HttpContext.Current.Response
       Dim Request As System.Web.HttpRequest = HttpContext.Current.Request



И всё заработало...

Я просто фишку про HttpContext.Current. не знал я жы всё сам учу методом научного тыка и копанием в MSDN Library но тут просто полный затык вышел...

PM MAIL YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.2167 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.