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
相关产品推荐
相关产品推荐

