首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 驗證控制項開發完整教學:BaseValidator 繼承與 TelNumValidator 實作

     編輯:關於ASP.NET

驗證控制項開發六大步驟

  1. 繼承 BaseValidator,自動獲得 ControlToValidate、ErrorMessage、ValidationGroup 等核心屬性。
  2. 定義專屬屬性 (如 Pattern、MinLength) 供宣告式設定。
  3. 覆寫 AddAttributesToRender 將專屬屬性輸出為 HTML 屬性 (如 data-pattern),供客戶端腳本讀取。
  4. 覆寫 EvaluateIsValid 實作伺服器端驗證邏輯 (回傳 bool)。
  5. 覆寫 OnPreRender 註冊客戶端驗證腳本 (Page.ClientScript.RegisterClientScriptBlock)。
  6. 撰寫 .js 檔案放置 WebUIValidation.js 同目錄,實作 ValidatorValidate 掛鉤函式。

核心原則:伺服器端與客戶端驗證邏輯必須完全一致,否則繞過客戶端驗證的惡意請求將通過伺服器端。

TelNumValidator 完整實作範例

伺服器端 (TelNumValidator.cs)

public class TelNumValidator : BaseValidator {
    public string Pattern { get; set; } = @"^0\d{1,2}-\d{7,8}$";
    protected override bool EvaluateIsValid() {
        string val = GetControlValidationValue(ControlToValidate);
        return Regex.IsMatch(val, Pattern);
    }
    protected override void AddAttributesToRender(HtmlTextWriter writer) {
        base.AddAttributesToRender(writer);
        writer.AddAttribute("data-pattern", Pattern);
    }
    protected override void OnPreRender(EventArgs e) {
        base.OnPreRender(e);
        Page.ClientScript.RegisterClientScriptBlock(GetType(), "TelNumValidatorScript",
            @"function TelNumValidatorEvaluateIsValid(val) {
                var pattern = val.attributes['data-pattern'].value;
                return new RegExp(pattern).test(val.value);
            }", true);
    }
}

頁面使用

<cc1:TelNumValidator ID="TelNumValidator1" runat="server"
    ControlToValidate="txtPhone" ErrorMessage="電話格式錯誤 (ex: 02-12345678)"
    Display="Dynamic" />

效果展示

TelNumValidator 錯誤狀態顯示

輸入不符合規則時,動態顯示紅字錯誤訊息,表單送出前攔截。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved