0

На моем веб-сайте используется веб-пользовательский элемент управления. Свойства для пользовательского элемента управления будут установлены для большинства моих пользователей. например если у меня есть 20 пользователей, обращающихся к моему сайту, 5 из них могут использовать пользовательский элемент управления с id = 1, 4 с помощью пользовательского элемента управления с id = 2. У меня есть свойство, связанное с каждым пользовательским элементом управления, которым я хотел бы делиться между пользователями, обращающимися к общему идентификатору.Обмен данными между выбранными пользователями в веб-приложении C#

Я подумал следующее:

  • переменная Applicaton, которая сохраняет комбинацию массива идентификатор/значение proprty
  • Создание статических свойств для пользовательского элемента управления, однако я чувствую, что значение будет shaed между всеми пользователей, независимо от идентификатора.
  • Или хранить в базе данных [я хочу, чтобы уменьшить взаимодействие с базой данных.]

Пожалуйста совет.

+0

В Интернете подумайте дважды, прежде чем использовать 'static's. –

ответ

0

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

Если вы довольны этим, вам может понадобиться подумать о сохранении вашей информации в кеше ASP.NET, например.

System.Web.Caching.Cache cache = Page.Cache; 

List<KeyValuePair<string, object>> controlSetup; 

controlSetup = cache.Get("ControlSetup" + this.Id.ToString()); 

if (controlSetup == null) 
{ 
    // Create the control setup from scratch 
    // Put the created control setup into the cache 
    cache.Put("ControlSetup" + this.Id.ToString(), controlSetup); 
} 

foreach (KeyValuePair(string, object) item In controlSetup 
{ 
    // Set the control values 
} 
0

Не уверен, что я вас правильно понял; предполагая, что вы хотите показать/скрыть определенный элемент на основе id.

Если то так, то как насчет:

Вы обеспечиваете случай переключателя в вашем управлении при нагрузке; который проверяет для id и устанавливает видимость элемента, который вы хотите использовать.

Скажем, например, id - роль пользователя. Поэтому, исходя из этого, я бы:

switch (nRoleID) 
{ 
    case 1: //Set controls visibility and hide others/ 
     break; 
    case 2: //Do something. 
     break; ; 
    default: //Hide all 
     break; 
} 

Просто думая вслух.

0

Помните, что HTTP является безстоящим,, поэтому ваши первые 2 варианта не будут работать.

Лучшая альтернатива заключается в том, чтобы хранить информацию, общую для нескольких пользователей, как DB.

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