最近在做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()方法,保證該物件中的所有項不會被移除。