ASP.NET Core刷新页面时如何正确累加更新Session存储值
问题根源
现有代码每次执行动作方法时,都会直接将计数变量硬编码初始化为1后写入Session,没有读取Session中已存储的历史计数做累加逻辑,因此每次页面刷新都会重置数值,无法实现累加效果。
实现逻辑
- 首次访问页面时,Session中不存在对应计数键的值,初始化计数为1写入Session
- 后续每次刷新页面,先从Session读取已存储的历史计数值,在原有值基础上加1后重新写回Session
- 将更新后的最终计数值赋值给ViewData,传递到视图层使用
修正后代码
public IActionResult ForgetPassword() { int? storedCount = HttpContext.Session.GetInt32(CountActiveCode); int counts; if (storedCount == null) { // 首次访问初始化计数为1 counts = 1; } else { // 非首次访问在历史值基础上加1 counts = storedCount.Value + 1; } HttpContext.Session.SetInt32(CountActiveCode, counts); ViewData["Counts"] = counts; return View(); }
补充说明
- 原方法标注了
async关键字但内部没有任何await异步操作,属于冗余标记,直接移除即可,避免不必要的状态机开销 - 请确认项目已正确完成Session配置:在
Program.cs中先通过builder.Services.AddSession()注册Session服务,再在请求管道配置中、路由映射中间件之前调用app.UseSession()启用Session中间件,否则Session读写功能不会生效。
内容的提问来源于stack exchange,提问作者sunboy_sunboy
相关产品推荐
相关产品推荐

