Upload
hoc-lap-trinh-web
View
5.325
Download
7
Embed Size (px)
DESCRIPTION
1. Kiểm tra tính hợp lệ của dữ liệu 2. Quản lý trạng thái
Citation preview
Bài 3:Kiểm tra tính hợp lệ của dữ liệu &
Quản lý trạng thái
Các nội dung đã học trong bài trước:Điều khiểnLàm việc với điều khiển Web Server
Hệ thống bài cũ
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
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 3
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 4
Điều khiển Validation
Dữ liệu nhập vào Web Formluôn phải thỏa mãn mộtđiều kiện ràng buộc.Điều khiển Validationcung cấp cách thức đểkiểm tra tính hợp lệ củadữ liệu nhập trên WebForm.
Điều khiển Validation
RequiredFieldValidator
CompareValidator
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 5
Dữ liệu nhập vào Web Formluôn phải thỏa mãn mộtđiều kiện ràng buộc.Điều khiển Validationcung cấp cách thức đểkiểm tra tính hợp lệ củadữ liệu nhập trên WebForm.
RangeValidator
RegularExpressionValidator
CustomValidator
ValidationSummaryRequiredFieldValidator
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ềukhiển với: Một hằng số hoặc Giá trị củamột điều khiển khác- 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ểnphải thỏa mãn một khoảng cho trước
Validator
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 6
RangeValidator - Bắt buộc giá trị nhập vào điều khiểnphả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ớpvớ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ỏamãn mã kiểm tra tính hợp lệ tự địnhnghĩa
ValidationSummary - Tổng kết tất cả các lỗi của tất cả cácValidator trên trang
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
Kiểm tra tính hợp lệcủa một điều khiển như thế nào?
Điều khiển nhậpliệu
Điều khiểnValidation
1 0…n
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 7
- Mỗi điều khiển Validation chỉ kiểm chứng dữ liệu củamộ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ềukhiển Validation
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ínhErrorMessage 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.
Các thuộc tính cơ bản của Validator
- Giá trị thuộc tính Text sẽ hiển thị trên Validator, giá trị thuộc tínhErrorMessage 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
Nội dung demoDemo 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ệuThiế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
DemoKiểm tra tính hợp lệ của dữ liệu
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 9
<asp:RequiredFieldValidator ID="valReqCfmPassword" runat="server"ControlToValidate="txtCfmPassword"ErrorMessage="Confirm PassWord is Required"ForeColor="#FF3300" Display="Dynamic">
</asp:RequiredFieldValidator>
Quá trình ASP.NETkiểm tra tính hợp lệ của dữ liệu
Người dùng nhậpliệu
Hiển thị thôngbáo lỗi
Người dùng nhậpliệu
Hiển thị thông báo lỗi
Trình duyệt hỗ trợ DHTML, dữ liệuđược kiểm chứng tại Client
Trình duyệt không hỗ trợ DHTML,dữ liệu được kiểm chứng tại Server
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 10
Người dùng Clickvào button
Client kiểmtra dữ liệu
Không hợp lệHợp lệ
Dữ liệu chuyển tớiServer để xử lý tiếp
Người dùng nhậpliệu
Người dùng Clickvào button
Server kiểm tra dữliệu sau quá trình
khởi tạo trang
Không hợp lệHợp lệ
Dữ liệu chuyển tớiServer để xử lý tiếp
Sử dụng với các điều khiển bắt buộc người dùng nhậpliệuCác điều khiển có thể sử dụng Required Field Validator
TextBox, drop-down List, ListBox, Radio button List, Checkbox list
Thuộc tính quan trọng: InitialValueGán bằng giá trị mặc định (được thiết lập ở thuộc tínhText) của điều khiển được kiểm traNếu giá trị này không được người dùng thay đổi, Validationthất bại
Required Field Validator
Sử dụng với các điều khiển bắt buộc người dùng nhậpliệuCác điều khiển có thể sử dụng Required Field Validator
TextBox, drop-down List, ListBox, Radio button List, Checkbox list
Thuộc tính quan trọng: InitialValueGán bằng giá trị mặc định (được thiết lập ở thuộc tínhText) của điều khiển được kiểm traNếu giá trị này không được người dùng thay đổi, Validationthất bại
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 11
Nội dung demoBắt buộc người dùng nhập liệu trên Text box NameBắt buộc người dùng sửa giá trị mặc định trên Text boxBirth dateBắt buộc người dùng chọn một giá trị trên List box
DemoSử dụng Required Field Validator
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 12
Giao diện trang lúc ban đầu Các thông báo lỗi được hiển thị khi ngườidùng không nhập liệu vào text box Name vàkhông thay đổi giá trị mặc định của text boxBirthDate & List box Credit Card
Thực hiện:Thêm Required Validator cho hai text box & List boxGán giá trị cho thuộc tính InitialValue cho hai Validator củatext box Birth date & List box credit Card bằng giá trị mặcđịnh của text box và List box này
DemoSử dụng Required Field Validator
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 13
<asp:RequiredFieldValidator ID="valCreditCard" runat="server"ControlToValidate="lstCreditCard“ ErrorMessage="You must select a credit card type"
ForeColor="#FF3300“ InitialValue="0“ ></asp:RequiredFieldValidator>
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ácKiểm tra kiểu dữ liệu nhập vào điều khiển nhập liệu
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ácKiể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
Thuộc tính của riêng điều khiển CompareValidator
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
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 15
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 +TypeSo sánh với điều khiển khác: Thuộc tính ControlToCompare + Operator +TypeKiểm tra kiểu dữ liệu: Thuộc tính Operator (=DataCheckType) + Type
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 0Bắt buộc Text box End Date phải là ngày lớn hơn StartDate
DemoSử 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 0Bắt buộc Text box End Date phải là ngày lớn hơn StartDate
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 16
Thực hiệnTạ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 Quantitylà IntegerĐiều khiển thứ ba: So sánh End Date với Start Date
DemoSử dụng Compare Validator
Thực hiệnTạ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 Quantitylà IntegerĐiều khiển thứ ba: So sánh End Date với Start Date
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 17
Chú ý khi sử dụng Compare ValidatorPhải sử dụng kết hợp với điều khiển Required Field 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 trongkhoảng được chỉ định
Thuộc tính riêng của điều khiển Range Validator
Range Validator
Thuộc tính Mô tả
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 18
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…)
Range Validator
Ví dụ sử dụng Range Validator để kiểm tra điều khiển thỏa mãn dảigiá trị số
<asp:TextBox ID="txtDays“ runat="server"> </asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server“ ControlToValidate="txtDays"Type="Integer“ MinimumValue="1" MaximumValue="14“ ErrorMessage="Daysmust 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
<asp:TextBox ID="txtDays“ runat="server"> </asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server“ ControlToValidate="txtDays"Type="Integer“ MinimumValue="1" MaximumValue="14“ ErrorMessage="Daysmust be between 1 and 14.">
</asp:RangeValidator>
Sử dụng khi nào???Sử dụng để hiển thị toàn bộ thông tin lỗi của các validatortrên trang
Hiển thị như thế nào???Hiển thị trên trang Web hoặc dưới dạng Message BoxGồm một HeaderText theo sau là danh sách các lỗi (thuộctính ErrorMessage) của các điều khiển ValidationDanh sách lỗi hiển thị dưới dạng: BulletList, List…
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 validatortrên trang
Hiển thị như thế nào???Hiển thị trên trang Web hoặc dưới dạng Message BoxGồm một HeaderText theo sau là danh sách các lỗi (thuộctính ErrorMessage) của các điều khiển ValidationDanh 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 ErrorMessagecủa điều khiểnRequiredFieldValidator
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 21
RequiredFieldValidator Validation Summary
Thông điệp * được thiết lập cho thuộc tính Text của điều khiểnRequiredFieldValidator
Thuộc tính ErrorMessagecủa điều khiểnRequiredFieldValidator
Các thuộc tính của điều khiển Validation Summary
Validation Summary
Thuộc tính Điều khiển
DisplayMode Định dạng hiển thị của thông báo lỗiGiá trị: BulletList, List hoặc SingleParagrapMặc định: BulletList
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 22
Định dạng hiển thị của thông báo lỗiGiá trị: BulletList, List hoặc SingleParagrapMặ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)
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
Ví dụ
<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
<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:"/>
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ểuthức chính quy được chỉ định sẵnVí dụ về biểu thức: \d{3} : Kí tự nhập vào phải là ba consố
Chỉ định biểu thức sử dụng thuộc tính: ValidationExpression
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ểuthức chính quy được chỉ định sẵnVí dụ về biểu thức: \d{3} : Kí tự nhập vào phải là ba consố
Chỉ định biểu thức sử dụng thuộc tính: ValidationExpression
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 24Nút mở cửa sổ RegularExpression Editor
Hai loại biểu thứcBiểu thức chính quy chuẩn do Visual Studiocung 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
Regular Expresion Validator
Hai loại biểu thứcBiểu thức chính quy chuẩn do Visual Studiocung 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
Tình huống sử dụng Phần tửsử dụng
Biểu thức ví dụ
Chỉ định một kí tự thông thường như(Chữ cái, chữ số…) cho biểu thức
A : Kí tự nhập vào bắt buộc phải là A
Chỉ định một dãy kí tự xuất hiện cùngnhau
( ) (AbC): Bắt buộc là AbC
Chỉ định một số mẫu tùy chọn | (AB)|(cd): Chuỗi nhập vào có thể là AB hoặccd
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à $
Các phần tửbiểu thức chính quy thường dùng
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,\W, \s, \S
\d: Kí tự nhập vào là chữ số\w: Kí tự nhập vào là chữ cái….
Chỉ định danh sách các kí tự người dùngcó thể lựa chọn nhập
[ ] [ABC]: Người dùng có thể nhập kí tự A hoặcB 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,},{n,m}, *, ?,+
\d{6}: Chuỗi nhập vào gồm 6 chữ số\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ố
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 26
Sinh viên tham khảo thêm ý nghĩa của các phần tử trong SGK
Biểu thức cho phép nhập chỗi từ 3->20chữ cái hoa
[A-Z]{3,20}
Biểu thức cho phép nhập chuỗi gồm 2chữ 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}
Tạo biểu thức chính quyVí dụ & Câu hỏi
Biểu thức cho phép nhập chỗi từ 3->20chữ cái hoa
[A-Z]{3,20}
Biểu thức cho phép nhập chuỗi gồm 2chữ 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}
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 27
Bài tập về nhà: Sinh viên tạo một Web Form đơngiản gồm trường số điện thoại di động và thêm điềukhiển để kiểm tra tính hợp lệ dữ liệu cho trường này
Sử dụng khi nào???Khi tất cả các điều khiển đã học không thể đáp ứng nhucầu kiểm tra tính hợp lệ một trường nhập liệuCustom Validatior sẽ thực hiện kiểm tra dữ liệu nhập vàosử dụng mã validation do bạn tự viết
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 nhucầu kiểm tra tính hợp lệ một trường nhập liệuCustom Validatior sẽ thực hiện kiểm tra dữ liệu nhập vàosử 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
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
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
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 29
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 30
Một ứng dụng Web kết thúc ngay sau khi trang Webđược tạo raHTTP 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êucầu mới được tạo ra.
Trạng thái (State)
Một ứng dụng Web kết thúc ngay sau khi trang Webđược tạo raHTTP 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êucầ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
ASP.NET cung cấp một vài phương pháp để duy trì trạngthá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ộtphiên làm việc, bằng cách tạo ra đối tượng trạng thái phiênlà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ùngtruy 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
Trạng thái (State)ASP.NET cung cấp một vài phương pháp để duy trì trạngthá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ộtphiên làm việc, bằng cách tạo ra đối tượng trạng thái phiênlà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ùngtruy 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
Browser
Browser
Web Server
Web Server
Yêu cầu HTTP đầu tiênTrình duyệt yêu cầu một trang WebASP.NET tạo đối tượng trạng thái phiên làmviệc và gán một ID cho phiên làm việc này
Hôi đáp HTTP đầu tiênTrình duyệt trả về trang được yêu cầucùng với session ID như là mộtCookie
- Sesion ID là duynhất. Tồn tại từkhi bắt đầu mộtphiên làm việcđến khi kết thúcphiên làm việc- Yêu cầu củangười dùng luônđược gửi kèmSesion ID- Cookies: là cáctệp được tạo bởitrang web, màbạn đã truy cậpđể lưu trữ thôngtin duyệt web
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 33
Browser Web Server
Yêu cầu HTTP tiếp theoTrình duyệt yêu cầu một trang khác.Server sử dụng session ID chứatrong yêu cầu để liên kết trình duyệtvới đúng đối tượng session ID
- Sesion ID là duynhất. Tồn tại từkhi bắt đầu mộtphiên làm việcđến khi kết thúcphiên làm việc- Yêu cầu củangười dùng luônđược gửi kèmSesion ID- Cookies: là cáctệp được tạo bởitrang web, màbạn đã truy cậpđể lưu trữ thôngtin duyệt web
Giá trị Session ID được truy xuất bằng cách sử dụngthuộc tính SessionID
DemoĐọc giá trị Session ID
protected void Page_Load(object sender, EventArgs e){
Response.Write(Session.SessionID);}
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 34
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
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ụngLậ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ầnthiế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ậpLư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ụngkhi cần
Theo dõi các bước trong thao tác của người dùngCho phép người dùng quay về thao tác trước.
Sử dụngtrạ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ụngLậ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ầnthiế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ậpLư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ụngkhi cần
Theo dõi các bước trong thao tác của người dùngCho 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
Để lưu dữ liệu riêng, lập trình viên sửdụng biến SessionBiến Session có thể được truy cậptrong tất cả các trang, tồn tại trongsuốt phiên làm việc của người dùngBiến Session chứa trong lớpSessionStateItemCollection nằm trongnamespace System.Web.SessionState
Biến Session
Để lưu dữ liệu riêng, lập trình viên sửdụng biến SessionBiến Session có thể được truy cậptrong tất cả các trang, tồn tại trongsuốt phiên làm việc của người dùngBiến Session chứa trong lớpSessionStateItemCollection nằm trongnamespace System.Web.SessionState
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 36
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 HttpContextTừ các lớp bên ngoài không phải lớp code-behind
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 HttpContextTừ 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 một biến SessionSử 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ủabiến)
Session["Cart"] = cart;
Lấy giá trị biến SesionSử dụng chỉ số
SortedList cart = (SortedList)Session["Cart"];
Thêm/Xóa/Lấy giá trị biến Session
Thêm một biến SessionSử 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ủabiến)
Session["Cart"] = cart;
Lấy giá trị biến SesionSử 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
Xóa biến Session (Nên xóa biến Session ngay khi biếnkhông còn hữu ích để sử dụng)
Sử dụng phương thức RemoveSession.Remove("Cart");
Xóa hết toàn bộ biến SesionSử dụng phương thức Clear
Sinh viên tự tìm hiểu thêm cách sử dụng đối tượngHttpContext
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ếnkhông còn hữu ích để sử dụng)
Sử dụng phương thức RemoveSession.Remove("Cart");
Xóa hết toàn bộ biến SesionSử dụng phương thức Clear
Sinh viên tự tìm hiểu thêm cách sử dụng đối tượngHttpContext
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 phiên làm việc lưu dữ liệutrong một phiên làm việc của một ngườidùng.Trạng thái ứng dụng lưu dữ liệu của tất cảngười dùng ứng dụngLập trình viên có thể sử dụng trạng tháiứng dụng để lưu dữ liệu, để sử dụngnhữ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 trangcủa ứng dụng hay các phiên làm việc
Trạng thái ứng dụng(Application state)
Dữ liệu củaUser 1
Dữ liệu củaUser n
Trạng thái phiên làm việc lưu dữ liệutrong một phiên làm việc của một ngườidùng.Trạng thái ứng dụng lưu dữ liệu của tất cảngười dùng ứng dụngLập trình viên có thể sử dụng trạng tháiứng dụng để lưu dữ liệu, để sử dụngnhữ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 trangcủ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 hợp sử dụng trạng thái ứng dụngLư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 đặthàng
Lưu dữ liệu thay đổi mỗi khi ứng dụng thực thiSố lượng người dùng đăng nhập vào diễn đàn
Trạng thái ứng dụng(Application state)
Trường hợp sử dụng trạng thái ứng dụngLư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 đặthàng
Lưu dữ liệu thay đổi mỗi khi ứng dụng thực thiSố 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
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êngHai cách truy cập trạng thái ứng dụng
Sử dụng thuộc tính Application của trangChỉ sử dụng trong file code-behind của Web Form
Sử dụng thuộc tính Application của đối tượng HttpContextTruy cập trạng thái ứng dụng từ các lớp khác không phải filecode-behind
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êngHai cách truy cập trạng thái ứng dụng
Sử dụng thuộc tính Application của trangChỉ sử dụng trong file code-behind của Web Form
Sử dụng thuộc tính Application của đối tượng HttpContextTruy cập trạng thái ứng dụng từ các lớp khác không phải filecode-behind
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 42
Thêm một biến trạng thái ứng dụngSử 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ụngTừ file code-behind
int applicationCount =Convert.ToInt32(Application["HitCount"]);
Từ một lớp (class) không phải file code-behindint applicationCount = Convert.ToInt32(HttpContext.Current.Application["HitCount"]);
Xóa biến/Xóa tất cả các biếnSử dụng phương thức Remove(name) hoặc Clear
Thêm/Xóa/Lấy giá trị biếntrạng thái ứng dụng
Thêm một biến trạng thái ứng dụngSử 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ụngTừ file code-behind
int applicationCount =Convert.ToInt32(Application["HitCount"]);
Từ một lớp (class) không phải file code-behindint applicationCount = Convert.ToInt32(HttpContext.Current.Application["HitCount"]);
Xóa biến/Xóa tất cả các biếnSử 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
Trạng thái ứng dụng có thể được truy cập bởi tất cảngười dùng ứng dụngNhiều người dùng cùng thay đổi một biến trạng thái ứngdụ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ụngtrước khi người dùng thay đổi giá trị biếnSử dụng phương thức Unlock để mở khóa sau khi ngườidùng đã thay đổi xong giá trị biến
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ụngNhiều người dùng cùng thay đổi một biến trạng thái ứngdụ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ụngtrước khi người dùng thay đổi giá trị biếnSử dụng phương thức Unlock để mở khóa sau khi ngườidùng đã thay đổi xong giá trị biến
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 44
Application.Lock();//Khóa trạng thái ứng dụng. Chỉ cho phép người dùng hiện tạithay đổi giá trị biến
int applicationCount=Convert.ToInt32(Application["HitCount"]);applicationCount++;Application["HitCount"] = applicationCount;Application.UnLock();
Nội dung demo:Demo cách sử dụng trạng tháiSessionDemo cách sử dụng trạng thái ứngdụng
Web Form gồm hai LabellblSessionClicks hiển thị số lầnclick vào button Post trong mộtsessionlblApplicationClicks hiển thị tổng sốlần mà tất cả người dùng click vàobutton Post
DemoSử 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áiSessionDemo cách sử dụng trạng thái ứngdụng
Web Form gồm hai LabellblSessionClicks hiển thị số lầnclick vào button Post trong mộtsessionlblApplicationClicks hiển thị tổng sốlần mà tất cả người dùng click vàobutton Post
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 45
Là các tệp được tạo bởi trang web, màbạn đã truy cập, để lưu trữ thông tinduyệt webLà một tập các cặp tên/giá trị được lưutrữ trong trình duyệt hoặc ổ đĩa củangười dùngVí dụ về Cookie:
ASP.NET_SessionId=jsswpu5530hcyx2w3jfa5u55EMail=Anne@Murach.comuser_ID=4993password=opensesame
Cookie
Là các tệp được tạo bởi trang web, màbạn đã truy cập, để lưu trữ thông tinduyệt webLà một tập các cặp tên/giá trị được lưutrữ trong trình duyệt hoặc ổ đĩa củangười dùngVí dụ về Cookie:
ASP.NET_SessionId=jsswpu5530hcyx2w3jfa5u55EMail=Anne@Murach.comuser_ID=4993password=opensesame
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 46
Các ứng dụng mail thườngcó tùy chọn lưu thông tinđăng nhập (tạo PersistentCookie)
Hai loại CookieSession Cookie: Tồn tại chỉ trong phiên làm việc hiện tạiPersistent 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ùngLưu thông tin cấu hình profile (hiển thị trang)
Cookie
Hai loại CookieSession Cookie: Tồn tại chỉ trong phiên làm việc hiện tạiPersistent 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ùngLư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
Ứng dụng gửi Cookie tới trình duyệt thông qua HTTPresponseMỗi lần trình duyệt gửi HTTP Request tới Server, nó sẽgửi kèm CookieMặc định ASP.NET sử dụng Cookie để lưu session ID củamột SessionLậ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ớpHttpCookie
Cookie
Ứng dụng gửi Cookie tới trình duyệt thông qua HTTPresponseMỗi lần trình duyệt gửi HTTP Request tới Server, nó sẽgửi kèm CookieMặc định ASP.NET sử dụng Cookie để lưu session ID củamột SessionLậ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ớpHttpCookie
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 48
Hai cách tạo CookieNew 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ínhExpires
HttpCookie nameCookie = newHttpCookie("UserName");nameCookie.Value = userName;nameCookie.Expires = DateTime.Now.AddYears(1);
Tạo Cookie
Hai cách tạo CookieNew 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ínhExpires
HttpCookie nameCookie = newHttpCookie("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
Các thành viên của lớp HttpCookieCollection
Làm việc với Cookie
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
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 50
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
Phương thức tạo một cookie mới và thêm cookie này vàođối tượng HttpResponse
Ví dụ
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ừ đốitượng HttpRequest
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 51
Phương thức truy xuất giá trị của một cookie từ đốitượ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 ".";
}}
Để sử dụng cookie, trình duyệt phải được kích hoạt đểsử dụng CookieKích hoạt/Vô hiệu Cookie trong IE
Chọn Tools> Internet OptionsChọn tab PrivacyKéo con trượt tới mức bảo mậtChấp nhận hoặc chặn cookies
Kích hoạt/ Vô hiệu cookie trong Fire FoxChọn Tools>OptionsChọn biểu tượng Privacy….
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 CookieKích hoạt/Vô hiệu Cookie trong IE
Chọn Tools> Internet OptionsChọn tab PrivacyKéo con trượt tới mức bảo mậtChấp nhận hoặc chặn cookies
Kích hoạt/ Vô hiệu cookie trong Fire FoxChọn Tools>OptionsChọ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
Các nội dung đã học trong bàiKiểm tra tính hợp lệ của dữ liệuASP.NET cung cấp các điều khiển Validation để kiểm tratính hợp lệ của dữ liệu nhập vào Web Form
RequiredFieldValidatorYêu cầu nhập liệu
CompareValidatorSo sánh: Với hằng số, với điều khiển khácKiểm tra kiểu dữ liệu nhập vào điều khiển : Integer, String…
RangeValidatorKiểm tra dữ liệu nhập vào dựa trên một khoảng giá trị
Tổng kết
Các nội dung đã học trong bàiKiểm tra tính hợp lệ của dữ liệuASP.NET cung cấp các điều khiển Validation để kiểm tratính hợp lệ của dữ liệu nhập vào Web Form
RequiredFieldValidatorYêu cầu nhập liệu
CompareValidatorSo sánh: Với hằng số, với điều khiển khácKiểm tra kiểu dữ liệu nhập vào điều khiển : Integer, String…
RangeValidatorKiể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
RegularExpressionValidatorSo khớp chuỗi nhập vào với một biểu thức chính quy chỉ địnhtrước
CustomValidationKiể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)
ValidationSummaryHiển thị danh sách tất cả các lỗi được tạo bởi toàn bộ điềukhiển Validator khác trên trang
Tổng kết
RegularExpressionValidatorSo khớp chuỗi nhập vào với một biểu thức chính quy chỉ địnhtrước
CustomValidationKiể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)
ValidationSummaryHiển thị danh sách tất cả các lỗi được tạo bởi toàn bộ điềukhiể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
ASP.NET cung cấp một vài phương pháp để duy trì trạngthá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ộtphiê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ạngthái hiển thị, trạng thái phiên làm việc & trạng thái ứngdụng
Tổng kết
ASP.NET cung cấp một vài phương pháp để duy trì trạngthá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ộtphiê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ạngthái hiển thị, trạng thái phiên làm việc & trạng thái ứngdụng
Kiểm tra tính hợp lệ của dữ liệu & Quản lý trạng thái 55
CookieLà 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 webLà một tập các cặp tên/giá trị được lưu trữ trong trình duyệthoặc ổ đĩa của người dùngASP.NET sử dụng cookie để lưu giữ Session ID của một phiênlàm việcThường sử dụng để lưu thông tin định danh người dùng
Tổng kết
CookieLà 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 webLà một tập các cặp tên/giá trị được lưu trữ trong trình duyệthoặc ổ đĩa của người dùngASP.NET sử dụng cookie để lưu giữ Session ID của một phiênlàm việcThườ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