asp.net 如何在Core6中通过“HttpContext.Session.Set”将一个列表发送到另一个剃须刀页面?

flseospp  于 2023-01-22  发布在  .NET
关注(0)|答案(1)|浏览(188)

我已经在名为“viewListNextWeek"的列表中保存了一些数据行。我想将此列表发送到下一个Razor页面,在那里我通过

return RedirectToPage("../Food/nextWeekFood");

基于this,我尝试过

HttpContext.Session.Set<List<reserveInfo>>("List", viewListNextWeek);

但我得到了错误

Error   CS0308  The non-generic method 'ISession.Set(string, byte[])' cannot be used with type arguments

我也读了this,但我不太明白该怎么做。

6pp0gazn

6pp0gazn1#

您可以创建一个扩展方法来将数据列表保存到会话中。请参考这个简单的演示:

public static class TestSession
    {
        //set session
        public static void SetObjectsession(this ISession session, string key, object value)
        {
            session.SetString(key, JsonConvert.SerializeObject(value));
        }

        //get session
        public static T GetObjectsession<T>(this ISession session, string key)
        {
            var value = session.GetString(key);
            return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
        }
    }

然后使用此方法设置和获取会话:

HttpContext.Session.SetObjectsession("A", viewListNextWeek);

HttpContext.Session.GetObjectsession<List<reserveInfo>>("A");

相关问题