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