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

ASP.NET Core 6中如何在视图间传递并显示Session内容

ASP.NET Core 6 跨视图Session显示问题修复方案

1. 修正ViewBag变量名不匹配问题

你的代码存在直接的变量名不一致错误:

  • ChangePassword控制器中将Session值赋值给了ViewBag.Email,但视图里却尝试读取ViewBag.Name,导致无法获取到值。

修复方式二选一:

方式一:修改控制器代码

public IActionResult ChangePassword()
{
    ViewBag.Name = HttpContext.Session.GetString("username");
    return View();
}

方式二:修改视图代码

<input type="text" value="@ViewBag.Email" />

2. 确认Session服务与中间件配置正确

ASP.NET Core 6默认未启用Session,必须手动完成配置,否则Session无法正常工作:

  • 在Program.cs中添加Session服务注册:
builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30); // 设置Session超时时长
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
});
  • 在中间件管道中启用Session(需放在app.UseRouting()之后,app.UseAuthorization()之前):
app.UseSession();

3. 验证Session写入有效性

可在ChangePassword控制器中添加调试逻辑,确认Session值是否正常读取:

public IActionResult ChangePassword()
{
    var username = HttpContext.Session.GetString("username");
    // 调试时可输出username,确认Session是否存在有效数据
    ViewBag.Name = username;
    return View();
}

内容的提问来源于stack exchange,提问作者dausa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:52:06