You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:36:20