Ngôn ngữ ASP.NET - CustomValidator
Điều khiển Custom Validator
Điều khiển này cho phép bạn tự viết hàm xử lý kiểm tra lỗi.
Sự kiện
ServerValidate: Đặt các xử lý kiểm tra dữ liệu trong sự kiện này. Việc kiểm tra này được thực hiện ở Server.
Ví dụ: Tạo trang web CustomValidator.aspx yêu cầu nhập 1 số, nếu số là lẻ thì không xác nhận và hiển thị thông báo yêu cầu phải nhập số chẵn. Ngược lại, xử lý điều gì đó (xuất ra thông báo!) : TextBox, Button, CustomValidator:
Code trang CustomValidator.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CustomValidator.aspx.cs" Inherits="validation1_CustomValidator" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Nhập số chẵn:<br />
<asp:TextBox ID="txtNumber" runat="server" Width="247px"></asp:TextBox>
<asp:CustomValidator ID="cvEvenNumber" runat="server" BorderColor="Red" ControlToValidate="txtNumber" ErrorMessage="Phải nhập số chẵn" ForeColor="#FF3300" OnServerValidate="cvEvenNumber_ServerValidate" ></asp:CustomValidator>
<br />
<asp:Button ID="btnCheck" runat="server" OnClick="btnCheck_Click" Text="Check" Width="161px" />
</div>
</form>
</body>
</html>
Khai báo sự kiện ServerValidator cho CustomValidator:
- Trình xử lý ServerValidate trên server
protected void cvEvenNumber_ServerValidate(object source, ServerValidateEventArgs args)
{
// xác nhận số nhập vào là số chẵn
if ((int.Parse(txtNumber.Text) % 2) == 0)
args.IsValid = true; // xác nhận đúng
else
args.IsValid = false; // chưa xác nhận
}
Khi hàm trả về, args.IsValid là true thì dữ liệu của control được xác nhận ngược lại chưa xác nhận
- Xử lý sự kiện click của button check
+ Không xử lý nếu chưa xác nhận dữ liệu
+ Xử lý đơn giản: xuất ra thông tin đã nhập số chẵn
protected void btnCheck_Click(object sender, EventArgs e)
{
if (!IsValid) // nếu chưa xác nhận trả về => không xử lý
return;
// nếu xác nhận dữ liệu => thông báo nhập số chẵn
Response.Write("Bạn nhập số chẵn");
}
Thực thi trang CustomValidator.aspx cho kết quả: