В ASP.NET Core MVC как вставить возвращаемое значение метода, который возвращает List <SelectListItem>в сеансе - PullRequest
0 голосов
/ 28 сентября 2019

В моем проекте ASP.NET Core MVC мне нужно вставить метод возврата ниже в сеансе, чтобы использовать этот сеанс в другом месте:

 public static List<SelectListItem> GetCity(int stateid)
    {
        LookupApiApi lookupApiApi = new LookupApiApi();
        Tuple<object, int> StateCities = lookupApiApi.LookupApiStateCitiesLookup(stateid);
        List<SelectListItem> listCities = new List<SelectListItem>();
        if (StateCities.Item2 == 200)
        {
            List<Lookups> cityLookupResponse = (StateCities.Item1) as List<Lookups>;
            foreach (Lookups item in cityLookupResponse)
            {
                listCities.Add(new SelectListItem()
                {
                    Value = item.Value.ToString(),
                    Text = item.Name
                });
            }
        }
        return listCities;

    }

В ASP.NET Framework MVC я мог бы вставитьвозвращаем значение верхнего действия в сеансе, как показано ниже, без каких-либо проблем:

Session["Cities"] = GetCity(stateid);

Но как я могу сделать что-то подобное в ASP.NET Core MVC?Любая помощь будет оценена!

1 Ответ

0 голосов
/ 28 сентября 2019

Как это?:

    HttpContext.Session.Set("Cities", GetCity(stateid));

или

    HttpContext.Session.Set<List<SelectListItem>>(key, result);

Чтобы разрешить использование сеансов,

    public void ConfigureServices(IServiceCollection services)
    {
            ....
            services.AddSession(options => {
                    options.IdleTimeout = <your session cookie timeout>;
                    options.Cookie.HttpOnly = true;
                });
            ....
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
            ....
            app.UseSession();
            ....
    }

и методы расширения для установки и получения сериализуемых объектов:

    public static class SessionExtensions
    {
        public static void Set<T>(this ISession session, string key, T value)
        {
                    session.SetString(key, JsonConvert.SerializeObject(value));
        }

        public static T Get<T>(this ISession session, string key)
        {
            var value = session.GetString(key);

            return value == null ? default(T) : 
                JsonConvert.DeserializeObject<T>(value);
        }
    }

больше на Состояние сеанса и приложения в ASP.NET Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...