ControllerBase.TempData 型別為 TempDataDictionary,用於**兩個連續 Action 之間**傳遞資料。
public ActionResult Index()
{
TempData["MyName"] = "Tristan";
return RedirectToAction("Index2");
}
public ActionResult Index2()
{
var name = TempData["MyName"]; // 可取得 "Tristan"
return View();
}

再次請求 Index2 時 TempData["MyName"] 為 null → **TempData 僅保留一個請求週期**。
HTTP 無狀態,TempData 能跨請求傳值必有持久化機制。查看 Controller 原始碼:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
TempData.Load(); // 從 Provider 載入
base.OnActionExecuting(filterContext);
}
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
TempData.Save(); // 存回 Provider
base.OnResultExecuted(filterContext);
}

每次 Action 執行前 Load(),執行後 Save()。預設 Provider 為 SessionTempDataProvider,故資料存於 Session,自然跨請求可用且讀取即銷毀。