1 [MVC5 Series - P4] Chia sẻ dữ liệu Sun Jul 05, 2015 9:21 pm
Admin
Admin
[MVC5 Series - P4] Chia sẻ dữ liệu
Chia sẻ dữ liệu
Là cách một đối tượng dữ liệu ở thành phần này được sử dụng ở thành phần khác tại cùng thời điểm hoặc khác thời điểm. Trong mô hình MVC, dữ liệu được chia sẻ theo các cách sau:- Từ Controller sang View: ViewBag, ViewData, Model
- Phiên làm việc: Session
- Toàn ứng dụng web: Application
- Trên 1 client: Cookie
1. ViewBag, ViewData
Đây là cách đơn giản nhất để truyền dữ liệu từ Controller sang View.Hiểu đơn giản, ViewBag là một kiểu dữ liệu động, bạn có thể bỏ bất cứ thứ gì vào đó, với bất cứ kiểu dữ liệu gì.The ViewBag object is a wrapper around the ViewData object that allows you to create dynamic properties for the ViewBag. Both the ViewData and ViewBag objects are great for accessing extra data (i.e., outside the data model), between the controller and view.
http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications
Cách dùng
Trong Controller
ViewBag.XXX
Trong View
@ViewBag.XXX
Ví dụ
ViewData hoàn toàn tương tự với ViewBag, chỉ khác ở cách viết
Trong Controller
ViewData["Hello"] = "Hello World";
Trong View
@ViewData["Hello"]
@ViewData.Hello
2. Model
Model là một object bất kỳ. Model được truyền từ Controller sang View thông qua lệnh return View(model);Ví dụ
Theo như trên, để truy xuất thông tin được truyền từ Controller ta sử dụng @Model, đây chính là đối tượng được truyền từ Controller thông qua lệnh return View(model);
Chú ý khi viết
- Code:
@Model.
Và một chú ý quan trọng nữa, đó là khi chỉ định kiểu cho Model thì ta dùng cú pháp
- Code:
@model
- Code:
@Model
Model với tập hợp
Đối với một tập hợp, cách sử dụng hoàn toàn tương tự. Tuy nhiên cách chỉ định model và cách sử dụng có đôi chút khác. Khi đó trong View, @Model được xem như 1 tập hợp, do đó ta phải dùng 1 vòng lặp để lấy dữ liệu từ model.
3. Session
Session là một vùng nhớ mà server cấp phát cho user để lưu dữ liệu riêng của mình. Vùng nhớ này sẽ được giải phóng khi hết phiên làm việc (Refresh trang, đóng trình duyệt...) Tùy thuộc vào nơi sử dụng Session sẽ có 1 cách viết khác nhauTrong Controller
Session["Demo"] = "This is demo";
Trong View
@Session["Demo"]
Trong 1 class bất kỳ khác
HttpContext.Current.Session["Demo"] = "This is demo";
Một số thao tác cơ bản với Session
| Thêm mới 1 đối tượng vào Session |
|
| Thêm mới (nếu chưa có) hoặc thay thế (nếu đã có) một đối tượng trong Session (thường dùng) |
|
| Xóa đối tượng ra khỏi Session |
|
| Xóa tất cả các đối tượng khỏi Session |
|
| Hủy Session |
|
| Lấy id của Session hiện tại |
|
Bước 1 thêm 1 Controller và Model
Thêm giao diện đăng ký
Tiếp theo, khi nhấn nút Submit, dữ liệu trong form sẽ được chuyển đến Action Register trong Controller Student với Method là Post. Ta thêm Action Register cho StudentController như sau:
Action Register chuyển đến Action Profile
Trong Action Profile kiểm tra xem đã có Session Student chưa, nếu chưa có thì nó sẽ quay lại trang đăng ký. Do đó, nếu ban đầu chưa có gì mà ta nhập url localhost.../Student/Profile thì vẫn sẽ ở trang đăng ký mà thôi.
Cuối cùng là xử lý khi nhấn vào Logout. Logout sẽ chuyển đến Action Logout và xóa Session["Student"] đồng thời quay lại trang đăng ký.
1 2 3 4 5 6 7 | public ActionResult Logout() { // delete session Session.Remove("Student"); return View("Index"); } |
Hy vọng qua ví dụ nhỏ này, bạn sẽ nắm được cách thức sử dụng Session. Đây là một kỹ thuật quan trọng và thường dùng trong web thương mại như duy trì giỏ hàng, các mặt hàng đã xem...
4. Application
Application là nơi sử dụng để duy trì dữ liệu được chia sẻ trên toàn ứng dụng. Bất cứ ai cũng có thể thực hiện các thao tác truy xuất, thay đổi, xóa dữ liệu trên Application.Cách thức lấy đối tượng Application cũng tương tự so với Session, tùy thuộc vào code được viết ở đâu thì có 1 cách lấy khác nhau
Controller |
|
|
View |
|
|
Class bất kỳ |
|
|
| Thêm mới 1 đối tượng vào Application |
|
| Thêm mới hoặc thay thế 1 đối tượng |
|
| Xóa đối tượng |
|
| Xóa sạch các đối tượng trong Application |
|
| Khóa Application, các yêu cầu của user khác phải đợi unlock |
|
| Mở khóa Application |
|
- Code:
Lock()
- Code:
UnLock()
Ứng dụng của Application
Một trong những ứng dụng đơn giản nhưng hiệu quả nhất của Application chính là đếm số lần khách truy cập trang web.
5. Cookie
Cookie là những mẫu tin nhỏ được lưu trữ trên máy tính của client. Cookie được truyền thông với Server thông qua Request và Response.Hạn chế của Cookie là chỉ lưu trữ dữ liệu text và kích thước tối đa là 4KB. Và việc lưu trữ Cookie còn tùy thuộc vào người dùng có cho phép lưu trữ hay không.
Thao tác với Cookie bao gồm nhận + xử lý Cookie từ client và Tạo + gửi Cookie về Server.
Nhận Cookie từ client
|
|
|
|
|
|
1 2 3 | var myCookie = new HttpCookie("id", "ABC123"); Request.Cookies.Add(myCookie); |
Các thuộc tính và phương thức của Cookie
| Giá trị của Cookie |
|
| Tên của Cookie |
|
| Thời hạn tồn tại của Cookie |
|
| Thêm 1 giá trị |
|
| Thêm mới hoặc thay thế 1 giá trị |
|
http://phantienquang.blogspot.com/2014/09/mvc5-series-p4-chia-se-du-lieu.html