![](/img/trans.png)
[英]How to return a list of model items to an ASP.NET Core 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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.