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

ASP.NET 驗證控件全方位入門 (一):驗證策略、控件總覽與基礎驗證器

     編輯:關於ASP.NET

為什麼需要資料驗證?

提升系統健壯性的兩大原則:

  1. 減少使用者輸入機會:如建立時間由資料庫 `DEFAULT GETDATE()` 自動產生,避免格式錯誤與邏輯偏差。
  2. 不信任使用者輸入:使用者多非技術人員,無法保證遵循格式;惡意攻擊者更會嘗試繞過前端檢查。需建立雙層防線:客戶端攔截誤輸,伺服器端阻擋攻擊。

驗證時機比較

維度客戶端驗證伺服器端驗證
技術JavaScript / VBScriptC# / VB.NET
優點即時回饋、減少頻寬、降低伺服器負載邏輯隱藏、難以繞過、程式撰寫容易
缺點程式碼可見、可被繞過、版權難控制需 Postback、增加伺服器負擔、回饋較慢

最佳實踐:雙層驗證 - 客戶端攔截 90% 非惡意錯誤,伺服器端攔截繞過與商業邏輯錯誤。

ASP.NET 驗證控件架構

所有驗證控件繼承 `BaseValidator`,共同屬性:

  • `ControlToValidate`:要驗證的目標控件 ID
  • `ErrorMessage` / `Text`:錯誤訊息 (前者用於 ValidationSummary,後者就地顯示)
  • `Display`:`Static` (保留空間) / `Dynamic` (不佔空間) / `None` (僅 Summary 顯示)
  • `EnableClientScript`:是否產生客戶端腳本 (預設 true)
  • `ValidationGroup`:分組驗證識別碼
  • `SetFocusOnError`:驗證失敗時焦點移至目標控件

基礎驗證控件詳解

1. RequiredFieldValidator - 必填驗證

確保控件值非空白 (預設比較 `InitialValue`,可自訂)。

<asp:RequiredFieldValidator
    ControlToValidate="txtName"
    ErrorMessage="姓名為必填"
    InitialValue="請輸入姓名" />

2. CompareValidator - 比較驗證

比較兩控件值、或控件值與常值。`Operator`:`Equal`、`NotEqual`、`GreaterThan`、`LessThan`、`DataTypeCheck`。`Type`:`String`、`Integer`、`Double`、`Date`、`Currency`。

<!-- 確認密碼 -->
<asp:CompareValidator
    ControlToValidate="txtConfirmPwd"
    ControlToCompare="txtPwd"
    Operator="Equal"
    ErrorMessage="兩次密碼不一致" />

<!-- 日期格式檢查 -->
<asp:CompareValidator
    ControlToValidate="txtBirth"
    Operator="DataTypeCheck"
    Type="Date"
    ErrorMessage="日期格式錯誤" />

3. RangeValidator - 範圍驗證

驗證值在指定範圍內 (`MinimumValue`、`MaximumValue`、`Type`)。

<asp:RangeValidator
    ControlToValidate="txtAge"
    MinimumValue="18"
    MaximumValue="100"
    Type="Integer"
    ErrorMessage="年齡需在 18-100 之間" />

正則表達式基礎補充

RegularExpressionValidator 使用的正則引擎為 .NET `System.Text.RegularExpressions`,支援完整語法:

  • 字元類別:`\d` `\w` `\s` `.` `[abc]` `[^abc]`
  • 量詞:`*` `+` `?` `{n}` `{n,}` `{n,m}`
  • 定位:`^` `$` `\b`
  • 群組與替代:`()` `(?:)` `|`
  • 前瞻/後顧:`(?=)` `(?!)` `(?<=)` `(?

驗證總結控件:ValidationSummary

集中顯示頁面 (或群組) 所有驗證錯誤。`ShowMessageBox="true"` 可彈出訊息盒;`ShowSummary="true"` 顯示清單;`HeaderText` 設定標題。

<asp:ValidationSummary
    ID="valSummary"
    runat="server"
    HeaderText="發現以下錯誤:"
    DisplayMode="BulletList"
    CssClass="alert alert-danger"
    ShowMessageBox="true"
    ShowSummary="false" />

分組驗證技術

同一頁面有多個表單 (如登入、註冊、搜尋) 時,設定各表單控件與按鈕相同 `ValidationGroup`,按鈕點擊時僅觸發該群組驗證。

總結

ASP.NET 提供完整的聲明式驗證控件體系,涵蓋必填、比較、範圍、正則、自訂等需求。理解雙層驗證策略、基礎控件屬性與分組機制,是建立健壯 Web 表單的基石。下篇將深入 `RegularExpressionValidator`、`CustomValidator` 與進階客戶端腳本整合。

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