TempData 用於跨請求傳遞暫時資料(如重導向後的成功/錯誤訊息)。預設使用 Session 儲存,生命週期為「目前請求到下一個請求結束」。本文解析原始碼實作、自訂儲存提供者與實際應用範例。
TempData 並指派給 Controller.TempData,然後從 Session 移除。TempData 內容存回 Session。因此 TempData 僅在下一個請求可用,第二個請求結束後即被清除。
public class BaseController : Controller
{
protected ActionResult ShowMsg(List<string> msgs)
{
TempData["Messages"] = msgs;
return RedirectToAction("Message");
}
public ActionResult Message()
{
return View(TempData["Messages"] as List<string>);
}
}
public class AdminController : BaseController
{
public ActionResult SaveSettings()
{
// ... 儲存邏輯
return ShowMsg(new List<string> { "設定已成功儲存!" });
}
}
<% if (Model != null) { %>
<ul>
<% foreach (var msg in Model) { %>
<li><%= msg %></li>
<% } %>
</ul>
<% } %>
TempData 是實作 PRG 模式與跨請求訊息傳遞的關鍵機制。理解其 Session 儲存特性與生命週期,並封裝於基類中,能大幅提升開發效率與一致性。