2012-05-07 10 views
14

Ai đó có thể giải thích mục đích của TempData trong MVC. Tôi hiểu nó hoạt động giống như ViewBag nhưng nó làm gì ngoài việc đó.MVC C# TempData

Trả lời

21

TempData có nghĩa là một phiên bản rất ngắn ngủi và bạn chỉ nên sử dụng nó chỉ trong yêu cầu hiện tại và các yêu cầu tiếp theo! Vì TempData hoạt động theo cách này, bạn cần biết chắc chắn yêu cầu tiếp theo sẽ là gì và chuyển hướng đến một chế độ xem khác là lần duy nhất bạn có thể đảm bảo điều này. Do đó, kịch bản duy nhất khi sử dụng TempData sẽ hoạt động đáng tin cậy khi bạn đang chuyển hướng. Điều này là do chuyển hướng giết yêu cầu hiện tại (và gửi mã trạng thái HTTP 302 Đối tượng được chuyển đến máy khách), sau đó tạo yêu cầu mới trên máy chủ để phân phối chế độ xem được chuyển hướng. Nhìn lại mẫu mã HomeController trước đây có nghĩa là đối tượng TempData có thể mang lại kết quả khác với dự kiến ​​vì nguồn gốc yêu cầu tiếp theo không thể được đảm bảo. Ví dụ: yêu cầu tiếp theo có thể bắt nguồn từ một phiên bản trình duyệt và máy hoàn toàn khác.

http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications

8

ViewBag

Cho phép bạn tạo tính năng động

dữ liệu Passing giữa bộ điều khiển và xem

khiển

ViewBag.Name= "Lion";

Xem

<div> 
    <h4>@ViewBag.Name</h4> 
</div> 

TempData

TempData được hiểu là một trường hợp rất ngắn ngủi

bạn chỉ nên sử dụng nó trong suốt hiện tại và s yêu cầu ubsequent chỉ

điển TempData được sử dụng để chia sẻ dữ liệu giữa các hành động điều khiển

TempData["Name"] = "Lion"; 

Tôi đã viết Blog bài về this.Check rằng How to use Asp.Net MVC TempData Properly ?

2

TempData là một đối tượng từ điển mà có nguồn gốc từ lớp TempDataDictionary và được lưu trữ trong phiên họp ngắn.

public TempDataDictionary TempData { get; set; } 

Đây là thuộc tính của lớp ControllerBase.Được sử dụng để chuyển dữ liệu từ yêu cầu hiện tại sang yêu cầu tiếp theo (có nghĩa là chuyển hướng từ trang này sang trang khác). Cuộc sống rất ngắn và chỉ nằm cho đến khi chế độ xem mục tiêu được tải đầy đủ. Yêu cầu typecasting để nhận dữ liệu và kiểm tra giá trị null để tránh lỗi. Nó được sử dụng để lưu trữ chỉ một thông báo thời gian như thông báo lỗi, thông báo xác thực.

+0

việc thiếu thông tin về điều này thật khó chịu. Tempdata hoạt động như thế nào trong giao thức HTTP? nó là một cookie ngắn ngủi như https://www.playframework.com/documentation/2.6.x/JavaSessionFlash của Play Có phải đó là một thứ được lưu trữ trong đối tượng phiên phía máy chủ không? nếu vậy, điều này có nghĩa rằng nếu bạn có nhiều máy chủ, bạn có thể không nhận được rằng TempData vì nó chỉ tồn tại trên một trong số họ, phải không? –

0

TempData là gì?

Tempdata giúp lưu trữ/duy trì các giá trị trong một yêu cầu. Đây là một trong những khái niệm để duy trì trạng thái trong ASP .Net MVC.

Làm cách nào để lưu trữ/lưu giữ dữ liệu trong yêu cầu tiếp theo? TempData bảo tồn các giá trị cho yêu cầu tiếp theo trong 4 điều kiện khác nhau trong MVC. Họ là

Điều kiện 1 - Không đọc trong yêu cầu đầu tiên.
Điều kiện 2 - Đọc trong yêu cầu đầu tiên.
Điều kiện 3 - Đọc & tiếp tục sử dụng Keep.
Điều kiện 4 - Duy trì sử dụng Peek và Đọc.

Không đọc trong yêu cầu đầu tiên: Nếu chúng tôi không đọc "TempData" trong yêu cầu hiện tại thì giá trị "TempData" sẽ được tiếp tục cho yêu cầu tiếp theo.
Đọc trong yêu cầu đầu tiên: Nếu chúng ta đọc "TempData" trong yêu cầu hiện tại thì giá trị "TempData" sẽ không tồn tại cho yêu cầu tiếp theo.
Đọc & Tiếp tục sử dụng Keep: Nếu chúng ta đọc "TempData" trong yêu cầu hiện tại và chúng tôi có thể giữ phương pháp để duy trì TempData cho yêu cầu tiếp theo. Trong MVC, chúng ta có các phương thức void giữ() và void giữ (string key) để duy trì dữ liệu.

http://dotnet-helpers.com/mvc/how-to-persist-data-with-tempdata-using-peek-and-keep-in-mvc/