2012-08-09 93 views
5

我知道這個主題已經在衆多帖子中處理過,但我無法解決它。在會話中存儲對象

在ActionResult中的控制器內我想將一個對象存儲在Session中並在另一個ActionResult中檢索它。像這樣:

public ActionResult Step1() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Step1(Step1VM step1) 
    { 
     if (ModelState.IsValid) 
     { 
      WizardProductVM wiz = new WizardProductVM(); 
      wiz.Step1 = step1; 
      //Store the wizard in session 
      // ..... 
      return View("Step2"); 
     } 
     return View(step1); 
    } 

    [HttpPost] 
    public ActionResult Step2(Step2VM step2) 
    { 
     if (ModelState.IsValid) 
     { 
      //Pull the wizard from the session 
      // ..... 
      wiz.Step2 = step2; 
      //Store the wizard in session again 
      // ..... 
      return View("Step3"); 
     } 
    } 

回答

16

存儲嚮導的方式:

Session["object"] = wiz; 

入門嚮導:

WizardProductVM wiz = (WizardProductVM)Session["object"]; 
+0

Thx爲您的答案它像一個魅力:-) – 2012-08-10 09:30:53

+0

我一直在努力鏈接到更深入的列表中的對象的顯示。 這正是我所需要的。謝謝。 – 2017-03-17 16:22:44

2

如果你只需要它在下一個動作,你打算再次存儲它,你可以使用TempData。 TempData與Session基本相同,只不過它在下次訪問時被「刪除」,因此需要按照您指示的那樣再次存儲它。

http://msdn.microsoft.com/en-us/library/dd394711(v=vs.100).aspx

如果可能的話,雖然,它可以更好地確定要使用張貼參數在必要的數據傳遞而不是依賴於會話(TempData的或以其他方式)

+0

Thx爲您的答案!它可以工作,但我選擇會話方式作爲解決方案,因爲我可以在我的嚮導中導航時在任何位置檢索我的對象。 – 2012-08-10 09:33:32

+0

以上鍊接現已死亡。 「這個話題已經不存在了 - 」該網站說。 – 2013-08-18 17:16:36

+0

我更新了鏈接到新版本 – Shawn 2013-08-19 12:26:20