You are on page 1of 56

Bài 3:

Kiểm tra tính hợp lệ của dữ liệu &


Quản lý trạng thái
Hệ thống bài cũ

Các nội dung đã học trong bài trước:


Điều khiển
Làm việc với điều khiển Web Server

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 2
Mục tiêu bài học

1. Kiểm tra tính hợp lệ của dữ liệu

2. Quản lý trạng thái

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 3
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 4
Điều khiển Validation

Dữ liệu nhập vào Web Form Điều khiển Validation


luôn phải thỏa mãn một
điều kiện ràng buộc. RequiredFieldValidator
Điều khiển Validation
cung cấp cách thức để CompareValidator

kiểm tra tính hợp lệ của


dữ liệu nhập trên Web RangeValidator

Form.
RegularExpressionValidator

CustomValidator

ValidationSummary
RequiredFieldValidator

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 5
Các loại điều khiển Validation &
Trường hợp sử dụng

Điều khiển Trường hợp sử dụng


RequiredFieldValidator - Với các điều khiển yêu cầu nhập liệu
CompareValidator - So sánh giá trị được nhập vào điều
khiển với: Một hằng số hoặc Giá trị của
một điều khiển khác
Validator - Kiểm tra kiểu dữ liệu được nhập vào
điều khiển
RangeValidator - Bắt buộc giá trị nhập vào điều khiển
phải thỏa mãn một khoảng cho trước
RegularExpressionValidator - Bắt buộc giá trị nhập vào phải so khớp
với một biểu thức được chỉ định sẵn

CustomValidator - Bắt buộc giá trị nhập vào phải thỏa


mãn mã kiểm tra tính hợp lệ tự định
nghĩa
ValidationSummary - Tổng kết tất cả các lỗi của tất cả các
Validator trên trang

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 6
Kiểm tra tính hợp lệ
của một điều khiển như thế nào?

Kiểm tra tính hợp lệ của một điều khiển bằng cách nào?
Liên kết điều khiển đó với một điều khiển Validation
1 0…n
Điều khiển nhập Điều khiển
liệu Validation

- Mỗi điều khiển Validation chỉ kiểm chứng dữ liệu của


một điều khiển nhập liệu
- Một điều khiển nhập liệu có thể liên kết với nhiều điều
khiển Validation

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 7
Các thuộc tính cơ bản của Validator
Thuộc tính Mô tả
ControlToValidate ID của điều khiển nhập liệu được kiểm tra hợp lệ
Display Cách hiển thị thông báo lỗi. Có 3 giá trị (Static, Dynamic, None)
- Nếu sử dụng nhiều Validator cho một điều khiển. Gán giá trị
Dynamic cho thuộc tính này
ErrorMessage/Text - Giá trị thuộc tính Text sẽ hiển thị trên Validator, giá trị thuộc tính
ErrorMessage sẽ hiển thị trên điều khiển ValidationSumary.
- Nếu thuộc tính Text không được thiết lập giá trị. Cả Validator và
điều khiển ValidationSumary đều hiển thị giá trị của ErrorMessage.
Enabled Kích hoạt/ vô hiệu điều khiển Validation
EnableClientScript Kích hoạt/ vô hiệu kiểm tra hợp lệ ở Client
ValidationGroup Gom nhóm các Validator
SetFocusOnError Thiết lập Focus cho điều khiển khi dữ liệu nhập vào không hợp lệ

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 8
Demo
Kiểm tra tính hợp lệ của dữ liệu
Nội dung demo
Demo cách liên kết điều khiển RequiredFieldValidator &
điều khiển CompareValidatior cho các điều khiển nhập liệu
Thiết lập giá trị cho các thuộc tính thường dùng
Định dạng màu cho điều khiển Validation

<asp:RequiredFieldValidator ID="valReqCfmPassword" runat="server"


ControlToValidate="txtCfmPassword"
ErrorMessage="Confirm PassWord is Required"
ForeColor="#FF3300" Display="Dynamic">
</asp:RequiredFieldValidator>

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 9
Quá trình ASP.NET
kiểm tra tính hợp lệ của dữ liệu

Trình duyệt hỗ trợ DHTML, dữ liệu Trình duyệt không hỗ trợ DHTML,
được kiểm chứng tại Client dữ liệu được kiểm chứng tại Server
Hiển thị thông
báo lỗi Hiển thị thông báo lỗi

Người dùng nhập


liệu Người dùng nhập
liệu

Người dùng Click


vào button Người dùng Click
vào button

Client kiểm
tra dữ liệu Server kiểm tra dữ
liệu sau quá trình
Không hợp lệ khởi tạo trang
Hợp lệ
Không hợp lệ
Hợp lệ
Dữ liệu chuyển tới
Server để xử lý tiếp Dữ liệu chuyển tới
Server để xử lý tiếp
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 10
Required Field Validator

Sử dụng với các điều khiển bắt buộc người dùng nhập
liệu
Các điều khiển có thể sử dụng Required Field Validator
TextBox, drop-down List, ListBox, Radio button List, Check
box list
Thuộc tính quan trọng: InitialValue
Gán bằng giá trị mặc định (được thiết lập ở thuộc tính
Text) của điều khiển được kiểm tra
Nếu giá trị này không được người dùng thay đổi, Validation
thất bại

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 11
Demo
Sử dụng Required Field Validator

Nội dung demo


Bắt buộc người dùng nhập liệu trên Text box Name
Bắt buộc người dùng sửa giá trị mặc định trên Text box
Birth date
Bắt buộc người dùng chọn một giá trị trên List box

Giao diện trang lúc ban đầu Các thông báo lỗi được hiển thị khi người
dùng không nhập liệu vào text box Name và
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái không thay đổi giá trị mặc định của text box 12
BirthDate & List box Credit Card
Demo
Sử dụng Required Field Validator

Thực hiện:
Thêm Required Validator cho hai text box & List box
Gán giá trị cho thuộc tính InitialValue cho hai Validator của
text box Birth date & List box credit Card bằng giá trị mặc
định của text box và List box này

<asp:RequiredFieldValidator ID="valCreditCard" runat="server"


ControlToValidate="lstCreditCard“ ErrorMessage="You must select a credit card type"
ForeColor="#FF3300“ InitialValue="0“ >
</asp:RequiredFieldValidator>

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 13
Compare Validator

Sử dụng khi nào???


So sánh giá trị điều khiển nhập liệu với hằng số hoặc giá
trị của một điều khiển khác
Kiểm tra kiểu dữ liệu nhập vào điều khiển nhập liệu

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 14
Compare Validator
Thuộc tính của riêng điều khiển Compare
Validator
Thuộc tính Mô tả

ValueToCompare Giá trị sử dụng để so sánh với điều khiển

Operator Loại so sánh


(Equal, GreaterThan…DatatypeCheck)
Type - Kiểu dữ liệu sử dụng để so sánh
(String, Iteger…)
- Chỉ sử dụng thuộc tính này khi thuộc tính Operator = DattatypeCheck
ControlToCompare ID của điều khiển sử dụng để so sánh

Sử dụng thuộc tính như thế nào???


So sánh với hằng số: Sử dụng thuộc tính ValueToCompare + Operator +
Type
So sánh với điều khiển khác: Thuộc tính ControlToCompare + Operator +
Type
Kiểm tra kiểu dữ liệu: Thuộc tính Operator (=DataCheckType) + Type
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 15
Demo
Sử dụng Compare Validator

Nội dung demo:


Bắt buộc dữ liệu trên text box Quantity phải là một số
nguyên lớn hơn hoặc bằng 0
Bắt buộc Text box End Date phải là ngày lớn hơn Start
Date

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 16
Demo
Sử dụng Compare Validator

Thực hiện
Tạo ba điều khiển Compare Validator
Điều khiển thứ nhất: So sánh Quantity với giá trị 0
Điều khiển thứ hai: Kiểm tra kiểu dữ liệu của trường Quantity
là Integer
Điều khiển thứ ba: So sánh End Date với Start Date

Chú ý khi sử dụng Compare Validator


Phải sử dụng kết hợp với điều khiển Required Field Validator

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 17
Range Validator

Sử dụng khi nào???


Kiểm tra xem giá trị do người dùng nhập vào có nằm trong
khoảng được chỉ định
Thuộc tính riêng của điều khiển Range Validator
Thuộc tính Mô tả

MinimumValue Giá trị nhỏ nhất mà điều khiển được phép nhập

MaximumValue Giá trị lớn nhất mà điều khiển được phép nhập

Type Kiểu dữ liệu sử dụng để so sánh (String, Integer, Date…)

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 18
Range Validator

Ví dụ sử dụng Range Validator để kiểm tra điều khiển thỏa mãn dải
giá trị số

<asp:TextBox ID="txtDays“ runat="server"> </asp:TextBox> &nbsp;

<asp:RangeValidator ID="RangeValidator1" runat="server“ ControlToValidate="txtDays"


Type="Integer“ MinimumValue="1" MaximumValue="14“ ErrorMessage="Days
must be between 1 and 14.">
</asp:RangeValidator>

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 19
Validation Summary

Sử dụng khi nào???


Sử dụng để hiển thị toàn bộ thông tin lỗi của các validator
trên trang
Hiển thị như thế nào???
Hiển thị trên trang Web hoặc dưới dạng Message Box
Gồm một HeaderText theo sau là danh sách các lỗi (thuộc
tính ErrorMessage) của các điều khiển Validation
Danh sách lỗi hiển thị dưới dạng: BulletList, List…

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 20
Validation Summary

Thuộc tính HeaderText của điều khiển ValidationSummary

Thuộc tính ErrorMessage


của điều khiển
RequiredFieldValidator

RequiredFieldValidator Validation Summary

Thông điệp * được thiết lập cho thuộc tính Text của điều khiển
RequiredFieldValidator

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 21
Validation Summary

Các thuộc tính của điều khiển Validation Summary

Thuộc tính Điều khiển


DisplayMode Định dạng hiển thị của thông báo lỗi
Giá trị: BulletList, List hoặc SingleParagrap
Mặc định: BulletList

HeaderText Đoạn văn bản hiển thị trước danh sách thông báo lỗi
ShowSummary Có /Không hiển thị điều khiển Validation Summary
(True/False). Mặc định True
ShowMessageBox Có/Không hiển thị thông báo lỗi trên Message box (chỉ
trong trường hợp Client Validation. (Mặc định False)

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 22
Ví dụ

Mã .aspx của các điều khiển Validation của Web Form có


giao diện như hình bên dưới

<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server"
ControlToValidate="lstCardType" InitialValue="None"
ErrorMessage="You must select a credit card type."
Display="Dynamic">*</asp:RequiredFieldValidator>

<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
runat="server"
ControlToValidate="txtCardNumber"
ErrorMessage="You must enter a credit card number."
Display="Dynamic">*</asp:RequiredFieldValidator>

<asp:ValidationSummary ID="ValidationSummary1"
runat="server"
HeaderText="Please correct the following errors:"/>

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 23
Regular Expresion Validator

Sử dụng khi nào????


Khi cần so khớp dữ liệu người dùng nhập vào với một biểu
thức chính quy được chỉ định sẵn
Ví dụ về biểu thức: \d{3} : Kí tự nhập vào phải là ba con
số
Chỉ định biểu thức sử dụng thuộc tính: Validation
Expression

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái Nút mở cửa sổ Regular 24
Expression Editor
Regular Expresion Validator

Hai loại biểu thức


Biểu thức chính quy chuẩn do Visual Studio
cung cấp
Tạo bằng cách sử dụng cửa sổ
Regular Expression Editor
Biểu thức tùy biến (Custom expression)
Tạo thành từ các phần tử
biểu thức chính quy

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 25
Các phần tử
biểu thức chính quy thường dùng
Tình huống sử dụng Phần tử Biểu thức ví dụ
sử dụng
Chỉ định một kí tự thông thường như A : Kí tự nhập vào bắt buộc phải là A
(Chữ cái, chữ số…) cho biểu thức
Chỉ định một dãy kí tự xuất hiện cùng () (AbC): Bắt buộc là AbC
nhau
Chỉ định một số mẫu tùy chọn | (AB)|(cd): Chuỗi nhập vào có thể là AB hoặc
cd
Chỉ định các kí tự ordinary như . , $, ^, \ \. : Kí tự nhập vào phải là dấu .
[, {, (, |, ), *, +, ?, \ \$: Kí tự nhập vào phải là $
Chỉ định một lớp các kí tự cho biểu thức \d, \D, \w, \d: Kí tự nhập vào là chữ số
\W, \s, \S \w: Kí tự nhập vào là chữ cái….
Chỉ định danh sách các kí tự người dùng [] [ABC]: Người dùng có thể nhập kí tự A hoặc
có thể lựa chọn nhập B hoặc C
[A-Z]: Kí tự nhập vào trong khoảng A đến Z
Chỉ định các từ hạn định {n}, {n,}, \d{6}: Chuỗi nhập vào gồm 6 chữ số
{n,m}, *, ?, \d{6,}: Chuỗi nhập vào có từ 6 chữ số trở lên
+ \d*: Chuỗi nhập vào chứa ít nhất một chữ số

Sinh viên tham khảo thêm ý nghĩa của các phần tử trong SGK

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 26
Tạo biểu thức chính quy
Ví dụ & Câu hỏi
Biểu thức cho phép nhập chỗi từ 3->20
chữ cái hoa
[A-Z]{3,20}
Biểu thức cho phép nhập chuỗi gồm 2
chữ số theo sau bởi dấu – và 4 chữ số
khác
\d{2}-\d{4} hoặc [0-9]{2}-[0-9]{4}
Biểu thức cho phép nhập số điện thoại di
động
0\d{8,9}
Bài tập về nhà: Sinh viên tạo một Web Form đơn
giản gồm trường số điện thoại di động và thêm điều
khiển để kiểm tra tính hợp lệ dữ liệu cho trường này
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 27
Custom validator

Sử dụng khi nào???


Khi tất cả các điều khiển đã học không thể đáp ứng nhu
cầu kiểm tra tính hợp lệ một trường nhập liệu
Custom Validatior sẽ thực hiện kiểm tra dữ liệu nhập vào
sử dụng mã validation do bạn tự viết

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 28
Custom validator

Hai cách Custom Validator kiểm tra dữ liệu hợp lệ


Kiểm tra sử dụng một hàm phía client (client-side function)
Sử dụng trình xử lý sự kiện ServerValidate

Sinh viên tìm hiểu thêm về điều khiển Custom validator trong SGK

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 29
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 30
Trạng thái (State)

Một ứng dụng Web kết thúc ngay sau khi trang Web
được tạo ra
HTTP không duy trì trạng thái của ứng dụng.
Biến, thuộc tính của các điều khiển bị mất khi một yêu
cầu mới được tạo ra.

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 31
Trạng thái (State)
ASP.NET cung cấp một vài phương pháp để duy trì trạng
thái
Trạng thái hiển thị (View State)
Duy trì giá trị thuộc tính của điều khiển và form được thay
đổi trong mã chương trình, giữa các lần thực thi của trang
Trạng thái phiên làm việc (session state)
Theo dõi trạng thái của mỗi người dùng trong suốt một
phiên làm việc, bằng cách tạo ra đối tượng trạng thái phiên
làm việc (session state object)
Chỉ tồn tại trong một phiên làm việc, bắt đầu khi người dùng
truy cập vào trang, kết thúc khi người dùng đóng ứng dụng.
Trạng thái ứng dụng:
Lưu dữ liệu của tất cả người dùng ứng dụng.
Tất cả người dùng ứng dụng, & tất cả các phiên làm việc
đều có thể truy cập trạng thái này
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 32
ASP.NET quản lý
trạng thái phiên làm việc như thế nào
Yêu cầu HTTP đầu tiên
Trình duyệt yêu cầu một trang Web
ASP.NET tạo đối tượng trạng thái phiên làm
việc và gán một ID cho phiên làm việc này
Browser Web Server
- Sesion ID là duy
nhất. Tồn tại từ
Hôi đáp HTTP đầu tiên khi bắt đầu một
Trình duyệt trả về trang được yêu cầu phiên làm việc
cùng với session ID như là một
đến khi kết thúc
Browser Cookie
Web Server phiên làm việc
- Yêu cầu của
người dùng luôn
Yêu cầu HTTP tiếp theo được gửi kèm
Trình duyệt yêu cầu một trang khác. Sesion ID
Server sử dụng session ID chứa
trong yêu cầu để liên kết trình duyệt
- Cookies: là các
với đúng đối tượng session ID tệp được tạo bởi
Browser Web Server trang web, mà
bạn đã truy cập
để lưu trữ thông
tin duyệt web

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 33
Demo
Đọc giá trị Session ID

Giá trị Session ID được truy xuất bằng cách sử dụng


thuộc tính SessionID
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session.SessionID);
}

Session ID của phiên làm việc 1 Session ID của phiên làm việc 2

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 34
Sử dụng
trạng thái phiên làm việc khi nào???

ASP.NET tự động sử dụng trạng thái phiên làm việc để


theo dõi các phiên làm việc của người sử dụng
Lập trình viên có thể sử dụng trạng thái phiên làm việc
để lưu dữ liệu riêng, để sử dụng bất cứ khi nào cần
thiết.
Các trường hợp nên sử dụng trạng thái phiên làm việc
Lưu thông tin người dùng khi đăng nhập
Lưu các đối tượng người dùng đang làm việc
Ví dụ: Lưu bản ghi dữ liệu khách hàng để sẵn sàng sử dụng
khi cần
Theo dõi các bước trong thao tác của người dùng
Cho phép người dùng quay về thao tác trước.
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 35
Biến Session

Để lưu dữ liệu riêng, lập trình viên sử


dụng biến Session
Biến Session có thể được truy cập
trong tất cả các trang, tồn tại trong
suốt phiên làm việc của người dùng
Biến Session chứa trong lớp
SessionStateItemCollection nằm trong
namespace System.Web.SessionState

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 36
Biến Session

Hai cách truy cập biến Session:


Sử dụng thuộc tính Session của lớp System.Web.UI.Page
Chỉ sử dụng trong file code-behind của trang
Sử dụng đối tượng HttpContext
Từ các lớp bên ngoài không phải lớp code-behind

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 37
Thêm/Xóa/Lấy giá trị biến Session

Thêm một biến Session


Sử dụng phương thức Add
Session.Add("Cart", cart);
// Thêm biến Session “Cart” có giá trị bằng cart
Sử dụng chỉ số (cách này thêm hoặc cập nhật giá trị của
biến)
Session["Cart"] = cart;
Lấy giá trị biến Sesion
Sử dụng chỉ số
SortedList cart = (SortedList)Session["Cart"];

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 38
Thêm/Xóa/Lấy giá trị biến Session

Xóa biến Session (Nên xóa biến Session ngay khi biến
không còn hữu ích để sử dụng)
Sử dụng phương thức Remove
Session.Remove("Cart");
Xóa hết toàn bộ biến Sesion
Sử dụng phương thức Clear
Sinh viên tự tìm hiểu thêm cách sử dụng đối tượng
HttpContext

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 39
Trạng thái ứng dụng
(Application state)

Trạng thái phiên làm việc lưu dữ liệu


trong một phiên làm việc của một người Dữ liệu của
User 1
Dữ liệu của
User n
dùng.
Trạng thái ứng dụng lưu dữ liệu của tất cả
người dùng ứng dụng
Lập trình viên có thể sử dụng trạng thái
ứng dụng để lưu dữ liệu, để sử dụng
những lúc cần thiết.
Dữ liệu này có thể truy cập từ tất cả
người dùng ứng dụng và tất cả các trang
của ứng dụng hay các phiên làm việc

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 40
Trạng thái ứng dụng
(Application state)

Trường hợp sử dụng trạng thái ứng dụng


Lưu dữ liệu ít khi thay đổi
Ví dụ: Các kì giảm giá, tỷ lệ lãi suất của một hệ thống đặt
hàng
Lưu dữ liệu thay đổi mỗi khi ứng dụng thực thi
Số lượng người dùng đăng nhập vào diễn đàn

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 41
Trạng thái ứng dụng

Giống như trạng thái phiên làm việc, lập trình viên sử
dụng các biến để lưu dữ liệu riêng
Hai cách truy cập trạng thái ứng dụng
Sử dụng thuộc tính Application của trang
Chỉ sử dụng trong file code-behind của Web Form
Sử dụng thuộc tính Application của đối tượng HttpContext
Truy cập trạng thái ứng dụng từ các lớp khác không phải file
code-behind

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 42
Thêm/Xóa/Lấy giá trị biến
trạng thái ứng dụng

Thêm một biến trạng thái ứng dụng


Sử dụng phương thức Add trong file global.asax
Application.Add("HitCount", 0);
Lấy giá trị biến trạng thái ứng dụng
Từ file code-behind
int applicationCount =
Convert.ToInt32(Application["HitCount"]);
Từ một lớp (class) không phải file code-behind
int applicationCount = Convert.ToInt32
(HttpContext.Current.Application["HitCount"]);
Xóa biến/Xóa tất cả các biến
Sử dụng phương thức Remove(name) hoặc Clear

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 43
Lock & Unlock
Trạng thái ứng dụng có thể được truy cập bởi tất cả
người dùng ứng dụng
Nhiều người dùng cùng thay đổi một biến trạng thái ứng
dụng tại một thời điểm -> Vấn đề !!!!
Sử dụng phương thức Lock để khóa trạng thái ứng dụng
trước khi người dùng thay đổi giá trị biến
Sử dụng phương thức Unlock để mở khóa sau khi người
dùng đã thay đổi xong giá trị biến
Application.Lock();
//Khóa trạng thái ứng dụng. Chỉ cho phép người dùng hiện tại
thay đổi giá trị biến
int applicationCount=Convert.ToInt32(Application["HitCount"]);
applicationCount++;
Application["HitCount"] = applicationCount;
Application.UnLock();

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 44
Demo
Sử dụng trạng thái phiên làm việc
& Trạng thái ứng dụng

Nội dung demo:


Demo cách sử dụng trạng thái
Session
Demo cách sử dụng trạng thái ứng
dụng
Web Form gồm hai Label
lblSessionClicks hiển thị số lần
click vào button Post trong một
session
lblApplicationClicks hiển thị tổng số
lần mà tất cả người dùng click vào
button Post

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 45
Cookie

Là các tệp được tạo bởi trang web, mà


bạn đã truy cập, để lưu trữ thông tin
duyệt web
Là một tập các cặp tên/giá trị được lưu
trữ trong trình duyệt hoặc ổ đĩa của
người dùng
Ví dụ về Cookie:
ASP.NET_SessionId=jsswpu5530hcyx
2w3jfa5u55
EMail=Anne@Murach.com Các ứng dụng mail thường
user_ID=4993 có tùy chọn lưu thông tin
đăng nhập (tạo Persistent
password=opensesame
Cookie)

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 46
Cookie

Hai loại Cookie


Session Cookie: Tồn tại chỉ trong phiên làm việc hiện tại
Persistent Cookie: Được lưu trên ổ đĩa máy Client
Sử dụng khi nào???
Lưu thông tin định danh người dùng
Lưu thông tin cấu hình profile (hiển thị trang)

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 47
Cookie

Ứng dụng gửi Cookie tới trình duyệt thông qua HTTP
response
Mỗi lần trình duyệt gửi HTTP Request tới Server, nó sẽ
gửi kèm Cookie
Mặc định ASP.NET sử dụng Cookie để lưu session ID của
một Session
Lập trình viên có thể tạo các cookies của riêng mình
Để tạo Cookie, khởi tạo một đối tượng của lớp
HttpCookie

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 48
Tạo Cookie

Hai cách tạo Cookie


New HttpCookie(name)
New HttpCookie(name, Value)
Ví dụ
Tạo Session Cookie
HttpCookie nameCookie =
new HttpCookie("UserName", userName);
Tạo Persistent cookie: Phải thiết lập giá trị cho thuộc tính
Expires
HttpCookie nameCookie = new
HttpCookie("UserName");
nameCookie.Value = userName;
nameCookie.Expires = DateTime.Now.AddYears(1);
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 49
Làm việc với Cookie

Các thành viên của lớp HttpCookieCollection

Thành viên Mô tả
[name] Chỉ số. Tham chiếu tới một cookie sử dụng tên
Count Tổng số cookie trong một tập hợp
Add Thêm một cookie vào tập hợp
Clear Xóa toàn bộ cookie của một tập hợp
Remove(name) Xóa một cookie được chỉ định bởi tên

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 50
Ví dụ
Phương thức tạo một cookie mới và thêm cookie này vào
đối tượng HttpResponse
private void AddCookie()
{
HttpCookie nameCookie =
new HttpCookie("UserName", txtUserName.Text);
nameCookie.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Add(nameCookie);
}

Phương thức truy xuất giá trị của một cookie từ đối
tượng HttpRequest
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ if (!(Request.Cookies["UserName"] == null))
lblUserName.Text = "Welcome back”
+ Request.Cookies["UserName"].Value ".";
}
}

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 51
Kích hoạt/ Vô hiệu Cookie

Để sử dụng cookie, trình duyệt phải được kích hoạt để


sử dụng Cookie
Kích hoạt/Vô hiệu Cookie trong IE
Chọn Tools> Internet Options
Chọn tab Privacy
Kéo con trượt tới mức bảo mật
Chấp nhận hoặc chặn cookies
Kích hoạt/ Vô hiệu cookie trong Fire Fox
Chọn Tools>Options
Chọn biểu tượng Privacy
….

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 52
Tổng kết

Các nội dung đã học trong bài


Kiểm tra tính hợp lệ của dữ liệu
ASP.NET cung cấp các điều khiển Validation để kiểm tra
tính hợp lệ của dữ liệu nhập vào Web Form
RequiredFieldValidator
Yêu cầu nhập liệu
CompareValidator
So sánh: Với hằng số, với điều khiển khác
Kiểm tra kiểu dữ liệu nhập vào điều khiển : Integer, String…
RangeValidator
Kiểm tra dữ liệu nhập vào dựa trên một khoảng giá trị

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 53
Tổng kết

RegularExpressionValidator
So khớp chuỗi nhập vào với một biểu thức chính quy chỉ định
trước
CustomValidation
Kiểm tra dữ liệu nhập vào sử dụng một hàm tự định nghĩa
(Viết mã C# hoặc hàm phía client)
ValidationSummary
Hiển thị danh sách tất cả các lỗi được tạo bởi toàn bộ điều
khiển Validator khác trên trang

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 54
Tổng kết

ASP.NET cung cấp một vài phương pháp để duy trì trạng
thái
Trạng thái hiển thị (View State)
Duy trì giá trị thuộc tính của điều khiển và form.
Trạng thái phiên làm việc (session state)
Theo dõi trạng thái của mỗi người dùng trong suốt một
phiên làm việc
Trạng thái ứng dụng:
Theo dõi trạng thái của tất cả người dùng ứng dụng & tất cả
các phiên làm việc của người dùng
Lập trình viên có thể lưu dữ liệu của riêng mình vào trạng
thái hiển thị, trạng thái phiên làm việc & trạng thái ứng
dụng
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 55
Tổng kết

Cookie
Là các tệp được tạo bởi trang web, mà bạn đã truy cập, để
lưu trữ thông tin duyệt web
Là một tập các cặp tên/giá trị được lưu trữ trong trình duyệt
hoặc ổ đĩa của người dùng
ASP.NET sử dụng cookie để lưu giữ Session ID của một phiên
làm việc
Thường sử dụng để lưu thông tin định danh người dùng

Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 56

You might also like