首页 .NET/Web .net core 3.0 session的使用,如何用session存object类型数据List泛型

.net core 3.0 session的使用,如何用session存object类型数据List泛型

作者:胡同里的砖头 围观群众:289 更新于:2023-02-26

首先.net core 与.net framework 是.net的不同版本。因此session的使用也不同

那么问题来了--.net core中使用session。 它复杂一些。

1.首先需要下载一个插件(Miscrosoft.AspNetCore.Session)

在解决方案的窗口(一般在右边)下你的项目里找到--“依赖项 或者叫dependances”--右击选择“管理Nuget程序包”

--点击打来--在搜索栏输入"session", 一般第一个就是“Miscrosoft.AspNetCore.Session”--安装它。

2.此时运行你 的测试session代码, 还不够, 可能会出现以下问题

“Session has not been configured for this application or request”就是你下载, 但没配置,也不行

3.找到startup.cs这个文件(在目录的最下方);

第一步 :解决方案:在Startup.cs文件中的Configure方法中加上这一句代码: app.UseSession();

不行再第二步(引用的图片):对应着方法名, 把大括号里的代码插进去;再试, 那个app.UseMvcWithDefaultRoute()如果报错, 就删掉。 就好了

我的心路。。

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddSessionStateTempDataProvider();
services.AddSession();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSession();
app.UseMvcWithDefaultRoute();
}
HttpContext.Session 可调用get,set方法。但是默认的方法只能保存string类型。

对于保存"购物车"的内容就不够了。

这里购物车 是一个List类型 储存多个商品 (商品是一个类 )

在网上找到一个自定义的Session扩展的类,新建一个类: SessionExtension,

复制注意只复制class 以内的内容

: 如下

--开始代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using System.Text;

namespace ProjetZZ3.Fonction
{
public static class SessionExtension
{
/// <summary>
/// 设置Session对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="session"></param>
/// <param name="key"></param>
/// <param name="obj"></param>
public static void SetObject<T>(this ISession session, string key, T obj)
{
session.SetString(key, JsonConvert.SerializeObject(obj));
}

/// <summary>
/// 获取Session对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="session"></param>
/// <param name="key"></param>
/// <returns></returns>
public static T GetObject<T>(this ISession session, string key)
{
T result = default(T);
var value = session.GetString(key);
if (!String.IsNullOrEmpty(value))
{
result = JsonConvert.DeserializeObject<T>(value);
}
return result;
}

}

}
这么一来就可以存储其他类型了: 下面代码红色标记的是使用方法

//添加到购物车功能

public IActionResult Add()
{
Commande c = new Commande("sdasd", 3);//模拟一个新的订单


List<Commande> panier_dans_session = new List<Commande>();

//if session["panier"] 是空的, 将它添加到原来的购物车中
if (HttpContext.Session.GetObject<List<Commande>>("panier") != null)
{
panier_dans_session = HttpContext.Session.GetObject<List<Commande>>("panier");
panier_dans_session.Add(c);
HttpContext.Session.SetObject("panier", panier_dans_session);
}
//else session["panier"] est vide,
else
{
panier_dans_session.Add(c);
HttpContext.Session.SetObject("panier", panier_dans_session);

}
ViewData["panier"] = panier_dans_session;
return View("Commandes");

}

  • 本文标题: .net core 3.0 session的使用,如何用session存object类型数据List泛型
  • 文章分类:【.NET/Web】
  • 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.
留言评论
站点声明:
1、本站【胡同里的砖头】个人博客,借鉴网上一些博客模板,取其各优点模块自行拼装开发,本博客开发纯属个人爱好。
2、所有笔记提供给广大用户交流使用,可转载,可复制,纯个人开发所遇问题锦集记录使用
Copyright © huzlblog.com All Rights Reserved. 备案号:苏ICP备2021056683号-8