Khoanglang89
Bạn hãy đăng nhập hoặc đăng ký
Khoanglang89

NHẬN THIẾT KẾ WEBSITE/ SOFTWARE - LÀM ĐỒ ÁN TỐT NGHIỆP, ĐỒ ÁN CHUYÊN MÔN NGÀNH CÔNG NGHỆ THÔNG TIN


You are not connected. Please login or register

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

1 [MVC5 Series - P4] Chia sẻ dữ liệu on Sun Jul 05, 2015 9:21 pm

Admin

avatar

Admin
Admin
Loading

[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:

  1. Từ Controller sang View: ViewBag, ViewData, Model
  2. Phiên làm việc: Session
  3. Toàn ứng dụng web: Application
  4. 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.
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
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ì.
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.
sẽ không có chế độ IntelliSense bởi vì View chỉ biết tiếp nhận Model từ Controller chứ không biết Model đó thuộc kiểu gì. Do đó ta phải gõ chính xác thuộc tính của Model. Để sử dụng được chức năng IntelliSense, ta chỉ định cho View biết Model có kiểu là gì bằng câu lệnh sau

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
(m nhỏ), còn khi sử dụng ta dùng
Code:
@Model
(M hoa).
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 nhau
Trong 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]Method/Property[/th][th]Description[/th][th]Example[/th]
Code:
Add(Key, Value)
Thêm mới 1 đối tượng vào Session
Code:
Session.Add("Name","PhanTienQuang");
Code:
[Key] = Value
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)
Code:
Session["Name"] = "TienQuang";
Code:
Remove(Key)
Xóa đối tượng ra khỏi Session
Code:
Session.Remove("Name")
Code:
Clear()
Xóa tất cả các đối tượng khỏi Session
Code:
Session.Clear()
Code:
Abandon()
Hủy Session
Code:
Session.Abandon()
Code:
SessionID
Lấy id của Session hiện tại
Code:
var id = Session.SessionId;
Ví dụ demo: Khi nhấn Submit, những thông tin nhập vào sẽ được lưu vào Session và chuyển qua trang hiển thị. Trong trang Profile, nếu Logout thì xóa Session.

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");

}
view raw actionresultlogout.cs hosted with ❤ by GitHub
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
[th]Nơi code[/th][th]Code[/th][th]Ví dụ[/th]
Controller
Code:
HttpContext.Application
Code:
HttpContext.Application["Hello"] = "Hello World";
View
Code:
@AppState
Code:
@AppState["Hello"]
Class bất kỳ
Code:
HttpContext.Current.Application
Code:
HttpContext.Current.Application["Hello"] = "Hello World";
Các thao tác với Application
[th]Thao tác[/th][th]Mô tả[/th][th]Ví dụ[/th]
Code:
Add(Key, Value)
Thêm mới 1 đối tượng vào Application
Code:
HttpContext.Application.Add("Visitor", 0);
Code:
[Key] = Value
Thêm mới hoặc thay thế 1 đối tượng
Code:
HttpContext.Application["Visitor"] = 0;
Code:
Remove(Key)
Xóa đối tượng
Code:
HttpContext.Application.Remove("Visitor");
Code:
Clear()
Xóa sạch các đối tượng trong Application
Code:
HttpContext.Application.Clear()
Code:
Lock()
Khóa Application, các yêu cầu của user khác phải đợi unlock
Code:
HttpContext.Application.Lock()
Code:
UnLock()
Mở khóa Application
Code:
HttpContext.Application.UnLock();
Như bảng trên, các thao tác trên Application hoàn toàn tương tự với Session, chỉ thêm 2 phương thức
Code:
Lock()

Code:
UnLock()
. Bởi vì Application được chia sẻ cho nhiều user cùng lúc, do đó có thể xảy ra hiện tượng xung đột dữ liệu, vì thế mà 2 phương thức này được bổ xung để xử lý vấn đề xung đột đó.
Ứ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
[th]Nơi viết[/th][th]Code[/th][th]Ví dụ[/th][th]Controller[/th][th]View[/th][th]Model[/th]
Code:
Request.Cookies
Code:
Request.Cookies["id"];
Code:
@Request.Cookies
Code:
@Request.Cookies["id"]
Code:
HttpContext.Current.Request.Cookies
Code:
HttpContext.Current.Request.Cookies["id"];
Tạo mới Cookie
1 2 3 var myCookie = new HttpCookie("id", "ABC123");

 

Request.Cookies.Add(myCookie);
view raw createcookie.cs hosted with ❤ by GitHub
Các thuộc tính và phương thức của Cookie
[th]Method/Properties[/th][th]Mô tả[/th][th]Ví dụ[/th]
Code:
Value
Giá trị của Cookie
Code:
myCookie.Value = "ABCD123";
Code:
Name
Tên của Cookie
Code:
myCookie.Name = "ids";
Code:
Expires
Thời hạn tồn tại của Cookie
Code:
myCookie.Expires = DateTime.Now.AddDays(1);
Code:
Values.Add(Key, Value)
Thêm 1 giá trị
Code:
myCookie.Values.Add("id2", "DEF345")
Code:
Values[Key] = Value
Thêm mới hoặc thay thế 1 giá trị
Code:
myCookie.Values["id"] = "ABCDEF";
Posted by Tien Quang Phan at 8:00 PM



http://phantienquang.blogspot.com/2014/09/mvc5-series-p4-chia-se-du-lieu.html


_________________
Có nỗi buồn triền miên, làm trái tim hoá đá
Có những dòng lệ nhỏ, khiến đá hoá thành tim.

-------------------------------------------------------------------------------------------------------
Program Skills:  ASP.Net MVC 3/4; C#; VB.Net/ VB 6.0; Java Applet/Swing; JS/JavaScript; Bootstrap/ AngularJS; HTML/CSS; Turbo C/ Turbo C++; Pascal...
Xem mẫu Phần mêm quản lý ở đây     -           Xem mẫu Bán hàng trực tuyến ở đây
Nguyễn Ích Hoàn
new_life02081989@yahoo.com
nguyenichhoan1989@gmail.com
Xem lý lịch thành viên http://khoanglang89.forumvi.com

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Bài viết mới cùng chuyên mục

    Bài viết liên quan với[MVC5 Series - P4] Chia sẻ dữ liệu

      Permissions in this forum:
      Bạn không có quyền trả lời bài viết