2011-09-05 3 views
0

Я немного смущен ... У меня проблемы с моим веб-приложением. Я создаю систему, которая генерирует котировки для клиентов. Клиент запрашивает котировку, тогда несколько сгенерированных кавычек могут быть отправлены им на основе исходного запроса.Общие переменные в ASP.NET Я запутался?

В моем файле .vb у меня есть:

Partial Class NewQuote 
Private Shared GeneratedQuoteIDArray As New ArrayList 

этот GeneratedQuoteIDArray затем доступен и построен из нескольких охраняемых подлодки.

У меня возникли трудности в многопользовательской среде. Если кто-то работает на той же странице, GeneratedQuoteIDArray поддерживает оба значения пользователей: S.

Пожалуйста, помогите ... Я уверен, что я просто делаю что-то глупое!

ответ

1

Shared означает, что это статическое значение, которое привязано к определению самого класса, а не к какому-либо конкретному экземпляру. Таким образом, в контексте приложения есть только один. Вот почему другие пути кода меняют одно и то же значение и переписывают значения друг друга.

Похоже, что вы ищете значение экземпляра, а не статическое значение. Например:

Private GeneratedQuoteIDArray As New ArrayList 

Таким образом, он будет прикреплен к любому новому экземпляру класса и закрыт только для этого экземпляра. Таким образом, отдельные запросы с отдельными экземплярами будут иметь отдельные значения.

Вы можете узнать больше о Shared членах here, а также во многих других местах. При исследовании этой темы ключевые слова, которые вы ищете, являются «статическими или экземплярами» с точки зрения переменных, функций и т. Д. Вероятно, вы найдете много кода стиля С, объясняющих это, но вы можете думать об этом так же в VB. VB просто называет его Shared вместо static.

+0

Привет, Дэвид, Спасибо за ваш полный ответ. Теперь я понимаю! У меня возникла странная проблема :(Я использую: GeneratedQuoteIDArray.Add (GeneratedQuoteID) Сессия («GeneratedQuoteIDs») = GeneratedQuoteIDArray В каждом из моих подмножеств для сборки массива. Теперь, когда я пытаюсь прочитать этот массив из моей сессии я получаю только последний элемент, добавленный в массив. Любые идеи? ar = Session («GeneratedQuoteIDs») –

+0

@ Mr-Easily-Confused: Не уверен. Я не вижу ошибок в этих двух строках кода (если нет каких-либо причуд о типах, хранящихся в 'Session', о которых я не знаю). Возможно, код в другом месте перезаписывает его. Я хочу отлаживать дальше приложение и точно видеть, в какой точке Проблема: если вы выберете значение _immediately_ после его установки (и выполните все необходимые кастинга для этого типа), то проблема все же произойдет? – David

+0

Эй @ Давид, после того, как вы прокомментировали, я решил пройти через все приложение и переписать несколько неуклюжих бит. Кажется, решил проблему :) Большое спасибо за вашу помощь –

0

Храните данные для каждого пользователя в Session или в Cookie.

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