Как установить значение в словаре Type Session Variable? - PullRequest
1 голос
/ 04 февраля 2011

У меня есть код ниже, чтобы получить тип словаря значения переменной сеанса словаря. Пожалуйста, смотрите код ниже

В моем коде я просто использую код ниже, чтобы получить любое значение из моей переменной сеанса:

string panelOpen = SessionDictionary.GetValue("FORMDATA", "panelOpen");

public class SessionDictionary
{
    public static string GetValue(string dictionaryName, string key)
    {
        string value = string.Empty;
        try
        {
            if (HttpContext.Current.Session[dictionaryName] != null)
            {
                Dictionary<string, string> form = (Dictionary<string, string>)HttpContext.Current.Session[dictionaryName];
                if (form.ContainsKey(key))
                {
                    if (!string.IsNullOrEmpty(key))
                    {
                        value = form[key];
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Logger.Error("{0}: Error while checking Session value from Dictionary", ex, "SessionDictionary");
        }
        return value;
    }
}

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

SessionDictionary.SetValue("FORMDATA", "panelOpen") = "First";

Теперь, если я снова перейду к приведенному ниже коду, он должен дать мне «Первый» для моей панели.

string panelOpen = SessionDictionary.GetValue("FORMDATA", "panelOpen");

Пожалуйста, предложите!

1 Ответ

2 голосов
/ 04 февраля 2011

«SetValue» будет почти идентичным, за исключением строки value = form[key];.Это должно стать form[key] = value;.

Нет необходимости «переводить словарь обратно в сеанс», так как ссылка на этот же словарь все еще присутствует в сеансе.

Примеры:

Установка значения

public static void SetValue(string dictionaryName, string key, string value)
{
  if (!String.IsNullOrEmpty(key))
  {
    try
    {
        if (HttpContext.Current.Session[dictionaryName] != null)
        {
            Dictionary<string, string> form = (Dictionary<string, string>)HttpContext.Current.Session[dictionaryName];
            if (form.ContainsKey(key))
            {
                form[key] = value;
            }
        }
    }
    catch (Exception ex)
    {
        Logger.Error("{0}: Error while checking Session value from Dictionary", ex, "SessionDictionary");
    }
  }
}

Удаление значения:

public static void RemoveValue(string dictionaryName, string key)
{
  if (!String.IsNullOrEmpty(key))
  {
    try
    {
        if (HttpContext.Current.Session[dictionaryName] != null)
        {
            Dictionary<string, string> form = (Dictionary<string, string>)HttpContext.Current.Session[dictionaryName];
            form.Remove(key); // no error if key didn't exist
        }
    }
    catch (Exception ex)
    {
        Logger.Error("{0}: Error while checking Session value from Dictionary", ex, "SessionDictionary");
    }
  }
}
...