.Net Core—-關於MVC中TempData持久化問題

十.二發表於2018-07-30

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

相關文章