最近在做mvc跨控制器傳值的時候發現一個問題,就是有時候TempData的值為null,然後查閱了許多資料,發現了許多都是邏輯什麼的,但是真正解決的辦法什麼的都沒有案例, 於是就把自己的代碼當成案例給貼出來,方便更直觀的解決問題。 因為TempData生命周期確實很短,所以需要持久化一下: 在當前A ...
最近在做mvc跨控制器傳值的時候發現一個問題,就是有時候TempData的值為null,然後查閱了許多資料,發現了許多都是邏輯和原理什麼的(想看原理可以查看原理的文章,本文是用法),但是真正解決的辦法什麼案例都沒有,
於是就把自己的代碼當成案例給貼出來,方便更直觀的解決問題。
因為TempData生命周期確實很短,所以需要持久化一下:
public ActionResult Index() { TempData["message"] = "123asd"; return view(); } public ActionResult GetTemData() { var foredid = TempData["message"].ToString(); var result=_content.userinfo(foredid);return View(); }
在當前Action方法中調用Keep方法則保證在當前請求中TempData對象中所存儲的鍵都不會被移除。
總結:
1.當利用TempData對象存儲值而未調用TempData.Keep方法時,此時只要該對象被已讀,然後該對象中的所有項將被標記為刪除狀態。
2.若調用TempData.Keep(string key)方法,此時不會進行標記。
3.RedirectToRouteResult和RedirectResult總是會調用TempData.Keep()方法,保證該對象中的所有項不會被移除。