261
Chương 7: ASP.NET và Web Form
hợp lệ của trang hoặc phương thức
BaseValidator.Validate
để xác nhận tính
hợp lệ của từng điều kiểm riêng rẽ.
Điều kiểm validator của ASP.NET là giải pháp lý tưởng để xác nhận tính hợp lệ của form một
cách nhanh chóng. Với điều kiểm validator, bạn có thể xác nhận tính hợp lệ của toàn bộ trang
cùng một lúc. Nếu muốn xác nhận tính hợp lệ chỉ một phần form, hoặc muốn quyết định xem
có cần xác định tính hợp lệ một điều kiểm nào đó hay không (dựa trên giá trị của một điều
kiểm khác chẳng hạn), bạn sẽ cần thực hiện thao tác xác nhận tính hợp lệ có-chọn-lựa.
Bước đầu tiên trong thao tác này là vô hiệu thuộc tính
EnableClientScript
của mọi điều kiểm
validator trên trang. Nếu không, việc kiểm tra sẽ được thực hiện tại client thông qua
JavaScript, trang sẽ không được post-back nếu nó chứa các giá trị không hợp lệ, và phần mã
thụ lý sự kiện sẽ không được thực thi. Một khi đã thực hiện thay đổi này, bạn có thể xác nhận
tính hợp lệ từng điều kiểm một bằng phương thức
BaseValidator.Validate
, hoặc xác nhận
tính hợp lệ toàn bộ trang bằng phương thức
Page.Validate
.
Ví dụ dưới đây thực hiện kiểm tra phía server với hai validator:
RangeValidator
và
RegularExpressionValidator
(xác nhận tính hợp lệ một địa chỉ e-mail). Nếu kiểm tra thất bại,
đoạn mã này sẽ duyệt qua tập hợp các validator trên form bằng thuộc tính
Page.Validators
.
Mỗi khi tìm thấy một validator có lỗi, nó sẽ tìm điều kiểm tương ứng bằng phương thức
Page.FindControl
rồi hiển thị giá trị lỗi.
using System;
using System.Web;
using System.Web.UI.WebControls;
public class SelectiveValidation : System.Web.UI.Page {
protected System.Web.UI.WebControls.TextBox txtNumber;
protected System.Web.UI.WebControls.TextBox txtEmail;
protected System.Web.UI.WebControls.Label lblCustomSummary;
protected System.Web.UI.WebControls.RegularExpressionValidator
validatorEmail;
protected System.Web.UI.WebControls.RangeValidator validatorNumber;
protected System.Web.UI.WebControls.Button cmdValidate;
// (Bỏ qua phần mã designer.)
private void cmdValidate_Click(object sender, System.EventArgs e) {
// Xác nhận tính hợp lệ của trang.
this.Validate();