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

ASP.NET Core 7中ViewBag、ViewData、TempData均为空问题排查

问题分析与解决

核心错误点

  1. 未实例化目标对象
    你把ClassName newName = new ClassName(name, id);这行代码注释掉了,导致newName变量完全未定义,直接给TempData["Message"]赋值newName.name会触发空引用异常,最终TempData自然没有有效内容。

  2. 重定向场景的配置缺失(若实际是重定向操作)
    你提到是从页面重定向到另一页,但当前控制器返回的是return View();(直接返回视图,并非重定向)。如果实际使用RedirectToAction这类重定向方法,ASP.NET Core的TempData依赖会话服务,需确保Program.cs中已配置:

    builder.Services.AddSession();
    // ...
    app.UseSession();
    

    另外重定向后TempData的数据默认只能读取一次,若需多次读取可使用TempData.Peek("Message")或TempData.Keep("Message")。


修正后的控制器代码示例

public IActionResult Index(string id, string name)
{
    // 实例化对象
    ClassName newName = new ClassName(name, id);
    TempData["Message"] = newName.name;
    // 若是重定向到其他动作方法,改用以下写法
    // return RedirectToAction("目标动作方法名");
    return View();
}

更直接的视图传值方式(非重定向场景)

如果是直接返回当前视图的场景,使用ViewData或ViewBag会更简单:

控制器代码

public IActionResult Index(string id, string name)
{
    ViewBag.Message = name;
    // 或者用ViewData
    // ViewData["Message"] = name;
    return View();
}

视图代码

<h4>Welcome back to @ViewBag.Message!</h4>
<!-- 对应ViewData的写法 -->
<!-- <h4>Welcome back to @ViewData["Message"]!</h4> -->

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:12:06