1. 程式人生 > >.net學習之表單驗證validator

.net學習之表單驗證validator

 表單驗證是很常見的,一般除了前端需要驗證資料是否為空,還需要驗證資料格式是否符合要求,一般使用正則表示式驗證,當然,除了前端,後端一般也需要將資料進行驗證,比如客戶端(瀏覽器)將js等前端指令碼禁用,點選提交,那麼不符合規範的資料就會提交到後臺,這回導致系統出現問題。

.net中提供了常用的validator

通用的屬性是:

  1. CtrolToValidate:也就是指待驗證的控制元件id,可以是TextBox,也可以是其他的一些控制元件
  2. ErrorMessage:也就是這個驗證出現不符合驗證需求時,需要顯示的提示資訊
  3. Display:可取值Static和Dynamic和None,一個是固定位置,另一個是動態位置(如果前面有空格,會移動到前面)另一個是無,也就是不顯示
  4. ValidationGroup:驗證組,其他控制元件也有,比如button,可以多個控制元件使用同一個ValidationGroup值,以組為單位進行驗證,後面demo會用到
  5. Text屬性:未通過驗證時驗證控制元件所在位置的顯示資料,如果不指定就會顯示errorMessage的內容
  6. SetFocusOnError:設定游標在驗證不通過時,移動到該控制元件校驗的內容所在位置

其餘還有很多,不在此一一列舉。

基本的校驗控制元件

比如:

CompareValidator:

可以驗證值的大小(比如數字大小),值的型別,比如時間格式(date),

特有屬性:ControlToCompare

,指的是“待比較”的控制元件id,比如在比較時間格式是否符合Date時,通常在TextBox中輸入資料,先使用RequiredFieldValidator驗證是否輸入為空,然後再新增一個compareValidator驗證data type是否為Date(由於compareValidator同時擁有屬性ControlToCompare和ControlToValidate這兩個屬性,如果id都指向同一個輸入時間的textbox的話,會拋異常,所以通常使用一個隱藏的textbox來暫存時間輸入框中的值,ControlToCompare就指向這個隱藏的textbox即可達到驗證時間格式的問題。

RangeValidator:

範圍驗證,比如輸入的資料長度,比如數字大小是否在某一個區間,

特有屬性也就是MaximumValue和MiniumValue,還有個是Type,表明這個Max和Min是來描述什麼型別,或者是什麼屬性的範圍,比如字元個數,還是數字大小

RegularExpressionValidator:

正則表示式驗證,通過指定的正則表示式,來驗證資料是否符合要求,.net自帶的有電話格式驗證,郵箱格式驗證等等

特有屬性就是:ValdationExpression,正則表示式串

ValidationSummary:

這個控制元件的作用就是將一個頁面上的或者是一個group中的所有validator不通過的errorMessage集中顯示的控制元件

 

 

demo:

使用一個簡單demo將上面的幾種控制元件基本都用到了

本demo思路,當用戶點選按鈕“save”時將表單提交到後端,觸發表單驗證

 

Error message 1.這個位置是使用了一個ValidationSummary控制元件,效果效果是這樣的

如果都不輸入(RequireFieldValidator):

日期格式輸入異常(CompareValidator):

coverage輸入非數字(RegularExpressionValidator):

 

分組驗證(ValidationGroup)

如果使用的分組驗證,那麼表單的“save”按鈕,需要新增屬性ValidationGroup=“123”來觸發組驗證,否則即使在ValidationSummary指定了valiodationGroup屬性,點選save,也不會顯示相應組的messageError,ValidationSummary只會顯示在同一個ValidationGroup的驗證控制元件相關的error message

  <asp:Button ID="saveButton" runat="server" Text="Save" OnClick="saveButton_Click" ValidationGroup="123" />

將Name的textBoX的ValidationGroup屬性設定為 “123”

ValidationSummary的ValidationGroup也設定為“123”

save按鈕的ValidationGroup也設定為“123”

不輸入name,然後點選save

測試:

輸入name,不在save 按鈕所在ValidationGroup的Validator不生效