【问题标题】:In ASP.NET Core MVC how insert the return value of a method that returns List<SelectListItem> in a Session在 ASP.NET Core MVC 中,如何在 Session 中插入返回 List<SelectListItem> 的方法的返回值
【发布时间】:2019-09-28 10:39:50
【问题描述】:

在我的 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 中插入上层操作的返回值,如下所示:

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

但是我怎样才能在 ASP.NET Core MVC 中做这样的事情呢?任何帮助将不胜感激!

【问题讨论】:

标签: c# asp.net-core-mvc


【解决方案1】:

像这样?:

    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);
        }
    }

更多Session and app state in ASP.NET Core

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    相关资源
    最近更新 更多