Tìm hiểu TempData trong Asp.Net

TempData trong Asp.Net MVC là một kiểu đối tượng Dictionary kế thừa từ lớp TempDataDictionary. TempData được dùng để lưu trữ dữ liệu tạm thời cho lần request kế tiếp. Dữ liệu trong TempData sẽ bị clear sau khi hoàn thành request tiếp theo đó. Vậy có thể rút ra được là chu kỳ “sống” của TempData khá là ngắn.

Thế tác dụng của TempData là gì?

TempData được sử dụng để truyền những dữ liệu không-nhạy-cảm từ Action này sang Action khác của cùng hoặc khác Controller, chuyển hướng Redirect cũng OK luôn.

Để sử dụng TempData, bạn cần 1 cặp key-value, tất nhiên rồi vì nó là kiểu Dictionary mà 🙂

Ở ví dụ trên ta thấy, Để gán giá trị cũng như truy cập vào TempData thông qua key. Bạn hoàn toàn có thể lấy giá trị của TempData từ một Action khác.Lưu ý là trước khi lấy giá trị của TempData để sử dụng, bạn cần convert/ép kiểu về kiểu dữ liệu mong muốn nhé.

Hình ảnh minh họa cho TempData

Như đã đề cập về thời gian sống của TempData, trong Action Index chúng ta gán giá trị cho TempData. Sang action About, TempData vẫn sống. Như đến request của Action Contact thì nó đã tèo rồi, bạn sẽ không thể lấy dữ liệu của nó được.

Vậy thì TempData có tác dụng khỉ gì khi mà nhanh tèo thế?

Tất nhiên là có cách rồi, để giữ dữ liệu sau khi hoàn thành request, bạn chi cần gọi hàm TempData.Keep() để có thể tiếp tục sử dụng trong lần reuqest tiếp theo. Có Keep thì sẽ có Remove, tương tự để Remove TempData bạn sử dụng hàm TempData.Remove()

Như ví dụ này thì bạn hoàn toàn có thể lấy được dữ liệu của TempData ở Action Contact.

Túm cái váy lại, một số điểm cần ghi nhớ đối với thằng TempData này

  • TempData được dùng để lưu dữ liệu giữa 2 request liên tiếp. Giá trị của TempData được bảo toàn trong quá trình chuyển hướng Redirect
  • TempData là một đối tượng dictionary, kê thừa từ TempDataDictionary
  • TempData sử dụng session để lưu trữ dữ liệu
  • Cần phải Convert kiểu dữ liệu trước khi sử dụng
  • Sử dụng TempData.Keep() để lưu giá trị cho lần request thứ 3
Đề xuất cho bạn

Để lại bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

three × 3 =