Harpreet_125 Ответов: 2

Как получить значение из сеанса словаря


я сохранил несколько значений в сеансе, используя словарь, как показано ниже

<pre> var get_values = new Dictionary<string, object>();

                        get_values["name"] = model.Name; ;
                        get_values["address"] = model.Address;
                        get_values["phone"] = model.Phone;
                        get_values["email"] = model.Email;
                        

                        Session["sess_values"] = get_values;


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

Что я уже пробовал:

<pre><pre> var get_values = new Dictionary<string, object>();

                        get_values["name"] = model.Name; ;
                        get_values["address"] = model.Address;
                        get_values["phone"] = model.Phone;
                        get_values["email"] = model.Email;
                        

                        Session["sess_values"] = get_values;

2 Ответов

Рейтинг:
2

OriginalGriff

Попробуй:

Dictionary<string, string> values = Session["sess_values"] as Dictionary<string, string>;
if (values != null)
   {
   string name = values["name"];
    ...


Richard Deeming

Вам также нужно будет изменить определение значения, которое вы сохранили в сеансе, - с Dictionary<string, object> к Dictionary<string, string>.

OriginalGriff

Правда - я пропустил это.

Рейтинг:
1

Richard Deeming

Просто: извлеките словарь из сеанса; если он не равен null, попробуйте извлечь значение из словаря.

var values = (Dictionary<string, object>)Session["sess_values"];
if (values != null)
{
    object value;
    if (values.TryGetValue("name", out value))
    {
        string s = value as string;
        if (s != null)
        {
            model.Name = s;
        }
    }
}

Если вы используете последнюю версию Visual Studio, вы можете немного упростить эту задачу:
var values = (Dictionary<string, object>)Session["sess_values"];
if (values?.TryGetValue("name", out object value) && value is string s)
{
    model.Name = s;
}

Но не очевидно, почему вы используете Dictionary<TKey, TValue> во-первых, когда вы могли бы просто использовать сеанс напрямую:
Session["name"] = model.Name;
model.Name = (string)Session["name"];