Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET Core MVC中,如何在会话中插入返回List的方法的返回值_C#_Asp.net Core Mvc - Fatal编程技术网

C# 在ASP.NET Core MVC中,如何在会话中插入返回List的方法的返回值

C# 在ASP.NET Core MVC中,如何在会话中插入返回List的方法的返回值,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,在我的ASP.NET Core MVC项目中,我需要在会话中插入以下方法的return,以便在其他地方使用此会话: public static List<SelectListItem> GetCity(int stateid) { LookupApiApi lookupApiApi = new LookupApiApi(); Tuple<object, int> StateCities = lookupApiApi.LookupA

在我的ASP.NET Core MVC项目中,我需要在会话中插入以下方法的return,以便在其他地方使用此会话:

 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中,我如何做类似的事情呢?任何帮助都将不胜感激

像这样

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

要启用会话的使用

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

更多信息请访问

您可以查看此链接。这两个链接都告诉我如何在.net core中以简单的方式启用和使用会话。如果您检查我的问题,您将看到我需要将GetCitystateid的输出放在会话中,但我不能!你能提供更多的细节吗?例如你得到了什么错误。
    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);
        }
    }