iT邦幫忙

0

ASP.NET MVC 【View.Bag】的問題

請問View.Bag 一定要用 return View() 才能保留嗎?

我用 return RedirectToAction() 無法被保留

請問要用 return RedirectToAction() 並保留類似 ViewBag這種變數要怎麼做?

用model 傳遞就可以了
1
科科
iT邦新手 5 級 ‧ 2021-10-12 17:55:14

TempData

0
Samuel
iT邦新手 4 級 ‧ 2021-10-15 12:09:43

你好要用TempData喔
ViewBag和ViewData儲存的值的生命週期只有在從Controller到View中,

而TempData中的資料不僅在從Controller到View中有效,
在不同的Action之間或者從一個頁面跳轉到另一頁面(Controller to Controller)後依然有效。

這篇文章有在講解更細部tempdata使用方式和生命週期

TempData生命週期:除了當下請求, 導頁後仍可續存 (如action to action, controller to action),但如果在View中一被讀取(或顯示出來)就會被刪除。
(TempData中資料只要一被讀取過就會被標記為已用過要被刪除。)

View讀取一次對應的TempData後即從TempData集合中刪除,
不過如果TempData未被View讀取之前,其值可在Controller之間傳遞直到session timeout。

若不想TempData被View讀取使用後就被刪除,可透過如下兩種保存機制
1.使用TempData.Peek來長期儲存。
2.若是只想再儲存一次,之後被View再次讀取後就刪除則要使用TempData.Keep。

https://coolmandiary.blogspot.com/2020/11/aspnet-mvcviewdataviewbagsessiontempdata.html

我要發表回答

立即登入回答