2012-08-09 45 views
5

Tôi biết chủ đề này đã được xử lý trong nhiều bài đăng nhưng tôi không thể làm việc được.Lưu trữ đối tượng trong Phiên

Trong bộ điều khiển Bên trong một ActionResult Tôi muốn lưu trữ một đối tượng trong phiên và lấy nó trong một ActionResult khác. Giống như:

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"); 
     } 
    } 

Trả lời

16

Lưu trữ wizard:

Session["object"] = wiz; 

Bắt wizard:

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

Thx cho câu trả lời của bạn nó hoạt động như một nét duyên dáng :-) –

+0

Tôi đã đấu tranh liên kết đến hiển thị sâu hơn về một đối tượng trong danh sách. Đây chính xác là những gì tôi cần. Cảm ơn bạn. –

2

Nếu bạn chỉ cần nó vào hành động tiếp theo và bạn dự định lưu trữ lại, bạn có thể sử dụng TempData. TempData về cơ bản giống như Session, ngoại trừ việc nó được "gỡ bỏ" khi truy cập tiếp theo, do đó cần phải lưu trữ nó một lần nữa như bạn đã chỉ ra rằng bạn đang làm.

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

Nếu có thể, mặc dù nó có thể tốt hơn để xác định một cách để sử dụng các thông số được đưa lên vượt qua trong các dữ liệu cần thiết hơn là dựa vào phiên (TempData hay cách khác)

+0

Thx cho câu trả lời của bạn! Nó hoạt động nhưng tôi đã chọn cách phiên làm giải pháp vì tôi có thể truy xuất đối tượng của mình ở bất kỳ đâu trong khi điều hướng trong trình hướng dẫn của mình. –

+0

Liên kết trên đã chết ngay bây giờ. 'Chủ đề này không còn tồn tại' - cho biết trang web. –

+0

Tôi đã cập nhật liên kết lên phiên bản mới – Shawn

Các vấn đề liên quan