Tôi có một bộ điều khiển sẽ logic đó tìm kiếm một: giá trị phiênMVC 3 Session.Abandon() được gọi trước khi thiết lập một TempData [ "myValue"] = "foo" gây ra bộ điều khiển bên cạnh có TempData như là null
//checks value null etc.. for existing record in session memory.
Session["certnum"]
Sau đó, trong bộ điều khiển tôi đã quyết định phải có một điều kiện mà:
//is called to initiate a New Record that will be created.
Session.Abandon();
Tuy nhiên trong mã hóa thủ tục là Session.Abandon(); đến trước khi tạo TempData ["myobject"] = "foo", và khi bước qua mã, TempData trong cửa sổ ngay lập tức cho thấy giá trị của tôi và tất cả đều có vẻ tốt. Sau đó, khi chuyển hướng đến một trình điều khiển khác:
return RedirectToAction("ChildInfo", "NewRecord");
Phương thức ChildInfo này không còn giá trị TempData ... Bây giờ nó không có giá trị. Phương pháp bỏ phiên được gọi là cách trước khi giá trị TempData được thiết lập, không chắc chắn đây có phải là lỗi với Phiên MVC hay không, nhưng điều đó không có ý nghĩa với tôi. Nếu tôi đang tạo một phiên bản lighweight mới TempData, thì nó sẽ tiếp tục tồn tại với bộ điều khiển tiếp theo. Nếu tôi loại bỏ phương thức Session.Abandon() thì giá trị TempData vẫn hoạt động như trước đây.
Điều quan trọng ở đây là TempData dựa vào phiên. Phiên làm việc đã biến mất do đó TempData đã biến mất. –
@Adam Có tôi nhận ra rằng tuy nhiên tôi đang gọi Session.Abandon() trước khi tạo ra một giá trị TempData, tôi đang trong cùng một phương pháp actionresult của một bộ điều khiển, nhưng vẫn còn, mà dường như chỉ điên với tôi. –
tại sao nó sẽ phát điên? bạn đang đặt lại một đối tượng cần thiết cho tempdata. Thats như nói "Tôi xóa tất cả các hàng trong bảng, nhưng tôi không hiểu tại sao trên yêu cầu tiếp theo hàng tôi sẽ yêu cầu không có?" :) –