- 说明:
在ASP.NET MVC中資料傳遞主要有ViewData與TempData
ViewData主要是Controller傳遞Data給View,存留期只有一個Action,要跨Action要使用TempData,
而TempData依TempDataProvider的不同,會有不同的存留期,預設的TempDataProvider是SessionStateTempDataProvider,
你沒有看錯,預設是用Session來存放TempData,
Session不是使用者存放資料,而且存留時間預設在20分鐘的嗎?
所以SessionStateTempDataProvider有做一些手段,Controller起來時,從Session載入TempData,然後刪除Session,所以在Action時是不會看到TempData的Session,在讀取TempData時,會記錄用了那些Key,
在Controller結束時,會把沒有過的TempData在存回Session中,所以一直沒有讀取的TempData是會存在到Session消失的。
- 示范
TempData["RouteName"] = routeName; var routeName = TempData["RouteName"].ToString(); var OldPageValueDto = TempData["OldPageValueDto"] as PageValueDto; var oldDetail = TempData["OldDetail"] as DomesticGeneralFeesDetail;