Tôi đang phát triển một ứng dụng ASP.NET MVC 2 kết nối với một số dịch vụ để thực hiện truy xuất và cập nhật dữ liệu. Các dịch vụ yêu cầu tôi cung cấp thực thể gốc cùng với thực thể được cập nhật khi cập nhật dữ liệu. Điều này là để nó có thể thay đổi theo dõi và đồng thời lạc quan. Không thể thay đổi dịch vụ.Dữ liệu phức tạp liên tục giữa các lần đăng trong ASP.NET MVC
Vấn đề của tôi là tôi cần phải bằng cách nào đó lưu trữ thực thể gốc giữa các lần đăng lại. Trong WebForms, tôi đã sử dụng ViewState, nhưng từ những gì tôi đã đọc, đó là cho MVC. Các giá trị ban đầu không phải là bằng chứng giả mạo vì các dịch vụ coi chúng là không đáng tin cậy. Các thực thể sẽ là (tối đa) 1k và nó là một ứng dụng mạng nội bộ.
Các tùy chọn tôi đã đưa ra là:
- phiên - loại trừ khả năng - Lưu trữ các đơn vị trong phiên, nhưng tôi không thích ý tưởng này như không có kế hoạch để chia sẻ phiên giữa
- URL - loại trừ khả năng - dữ liệu là quá lớn
- HiddenField - Lưu trữ các thực thể tuần tự trong một lĩnh vực ẩn, có lẽ với mã hóa/mã hóa
- HiddenVersion - Các thực thể có trường phiên bản (SQL) trên chúng, mà tôi có thể đưa vào trường ẩn. Sau đó, trên một lưu tôi nhận được thực thể "bản gốc" từ các dịch vụ và so sánh các phiên bản, làm đồng thời lạc quan của riêng tôi.
- Cookies - Giống như 3 hoặc 4, nhưng sử dụng một cookie thay vì một lĩnh vực ẩn
Tôi đang nghiêng về phía tùy chọn 4, mặc dù 3 sẽ đơn giản hơn. Các tùy chọn hợp lệ này hay tôi đang đi sai đường? Có cách nào tốt hơn để làm điều này?
Đừng quên TempData http://stackoverflow.com/search?q=tempdata – R0MANARMY
@ R0manarmy Không phải là TempData chỉ hợp lệ cho yêu cầu hiện tại? –
Rõ ràng là nó đã thay đổi rất nhiều trong ASP.NET MVC2 http://blog.donnfelker.com/2010/02/26/aspnet-mvc2-tempdata-now-persists/ Lựa chọn khá "Chúng tôi đã thay đổi việc triển khai trong MVC 2 hơi như một kết quả: giá trị sẽ được gỡ bỏ từ TempData sau khi yêu cầu trong đó nó được đọc, do đó, nó sẽ tiếp tục tồn tại trong từ điển TempData của bạn cho đến khi bạn hiển thị nó trong một số trang.Điều này cho phép một kịch bản đa chuyển hướng (chẳng hạn như Đăng nhập Windows Live ID) để sử dụng TempData và nó vẫn được treo xung quanh cho đến khi bạn sẵn sàng cho nó. " – R0MANARMY