繁体   English   中英

在 ASP.NET Core MVC 中如何插入返回 List 的方法的返回值<selectlistitem>在 Session</selectlistitem>

[英]In ASP.NET Core MVC how insert the return value of a method that returns List<SelectListItem> in a Session

在我的 ASP.NET 核心 MVC 项目中,我需要在 session 中插入以下方法的返回,以便在另一个地方使用此 session:

 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 框架 MVC 中,我可以在 Session 中插入上部操作的返回值,如下所示,没有任何问题:

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

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

像这样?:

    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 和应用程序 state 在 ASP.NET 核心

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM