我有一個控制器將邏輯查找一個:會話值MVC 3 Session.Abandon()設定的TempData之前稱爲[「myvalue的」] =「foo」的使下一個控制器具有TempData的爲空
//checks value null etc.. for existing record in session memory.
Session["certnum"]
該Session.Abandon()
//is called to initiate a New Record that will be created.
Session.Abandon();
然而在程序編碼是;:
然後在控制器I已決定有一個條件,其中在創建TempData [「myobject」] =「foo」之前出現,並且在單步執行代碼時,立即窗口中的TempData顯示我的值,並且都很好。然後重定向到另一個控制器:
return RedirectToAction("ChildInfo", "NewRecord");
此ChildInfo方法不再具有TempData值...現在它爲空。會話放棄方法在TempData值被設置之前被調用,並不確定這是否是MVC會話中的錯誤,但這對我來說意義不大。如果我正在創建一個新的輕量級會話TempData,那麼它應該持續到下一個控制器。如果我刪除Session.Abandon()方法,那麼TempData值會像以前一樣繼續工作。
這裏重要的是TempData依賴於會話。會話消失了,因此TempData消失了。 –
@Adam是的,我意識到無論如何我在創建一個TempData值之前調用Session.Abandon(),但我仍然處於控制器的同一個actionresult方法中,但是,對我而言,這似乎只是一種瘋狂。 –
爲什麼它會瘋了?您正在重置tempdata所需的對象。這就像說「我刪除表中的所有行,但我不明白爲什麼在下一個請求中,我要請求的行不在那裏?」 :) –