無論是在我們平時上網、發郵件、辦公、學習和生活中經常會輸入一些資料,比如社會安全號碼、郵件帳號、數字、漢字、數字字母組合,或者符合某一個規格的輸入資料,這是我們想要的輸入結果,而結果往往令人差強人意,我們希望使用者輸入數字,他偏偏輸入漢字,因此軟體可能會出現未知錯誤,使用者使用系統的效率也會因此而降低,那麼怎麼才能解決這一問題呢?
這需要用到一組驗證控制項,它們常用而方便為我們提供了驗證功能,下面讓我們看一看它們如何使用。
驗證控制項
| 驗證控制項名 |
驗證內容 |
| RequireFieldValidator |
驗證輸入的內容是否為空白 |
| RangeValidator |
檢查輸入的資訊在某範圍內 |
| RegularExpressionValidator |
檢查輸入資訊否則正則式 |
| CompareValidator |
輸入值與某個常數或者控制項比較 |
| CustomValidator |
服務端或用戶端自訂驗證規則 |
| ValidationSummary |
顯示驗證控制項的驗證錯誤摘要 |
驗證控制項相同屬性
| 屬性 |
說明 |
| ControlToValidate |
設定為要驗證控制項ID,無資料則顯示ErrorMessage中字串 |
| ErrorMessage |
表示當檢查不合法時出現的錯誤資訊 |
當然,每個控制項根據作用不同有自己的特有屬性,下面就來看一下它們自己的特有屬性。
【RequireFieldValidator】
Display:錯誤資訊的顯示方式,Static表示控制項的錯誤資訊在頁面中佔有固定位置,如果沒有錯誤,它的顯示類似於Label控制項;Dynamic表示控制項錯誤資訊出現時佔用頁面空間;None表示錯誤出現時不顯示提示資訊,但是可以在ValidationSummary中顯示。
Text:如果Display為Static,不出錯時,顯示該文本。
代碼:
<tr> <td> <asp:Label ID="Label1" runat="server" Text="使用者名稱:"></asp:Label> </td> <td> <asp:TextBox ID="txtUserName" runat="server" ></asp:TextBox> <asp:requiredfieldvalidator ID="require" ControlToValidate="txtUserName" Display="Dynamic" runat="server" errormessage="沒有輸入使用者名稱!請輸入!"></asp:requiredfieldvalidator> </td> </tr>
在使用這個控制項時,如果這個控制項驗證不通過,那麼其他驗證控制項都不會起作用,可以說這個是驗證通過的前提,至於為什麼查了一下是這樣的,如果設定了ErrorMessage屬性,一旦輸入框為空白,無論你點擊了頁面的那個位置,都會有錯誤提示,而且,Page.IsValid屬性的值只能取True,沒有辦法取得False值,如果輸入框為空白時,頁面都沒有辦法重新整理,不能起作用,自己感覺這樣子用起來可能能夠達到驗證的目的,輸入錯誤時頁面不重新整理,可能能夠減少伺服器的負擔,但是給人的感覺非常不友好。
【RangeValidator】
MaximumValue:範圍的最大值。
MinimumValue:範圍的最小值。
Text:如果Display為Static,不出錯時,顯示該文本。
Type:定義控制項輸入實值型別,如String、Integer、Double、Data、Currency等,輸入值先轉換,再驗證。
【RegularExpressionValidator】
ValidationExpression:指定的Regex。
代碼:
<tr> <td> <asp:Label ID="Label4" runat="server" Text="請輸入Email:"></asp:Label> </td> <td> <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox> <asp:regularexpressionvalidator ID="regularexpressionvalidator1" runat="server" ControlToValidate="txtEmail" errormessage="Email格式不正確!" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:regularexpressionvalidator> </td> </tr>
【CompareValidator】
Equal:當比較的兩個值相等時,通過驗證。
NotEqual:當比較的兩個值不相等時,通過驗證。
GreaterThan:當被驗證的值大於指定的常數值或控制項值時,通過驗證。
GreaterThanEqual:當被驗證的值大於等於被驗證的常數值或控制項值時,通過驗證。
LessThan:當被驗證的值小於指定的常數值或控制項值時,通過驗證。
LessThanEqual:當被驗證的值小於等於被驗證的常數值或控制項值時,通過驗證。
DataTyeCheck:當被驗證的值與指定的常數值或控制項實值型別相同時,通過驗證。
ControlToCompare:要進行比較的控制項ID.
ValueToCompare:指定要比較的常用值。
代碼:
<tr> <td> <asp:Label ID="Label3" runat="server" Text="確認密碼:"></asp:Label> </td> <td> <asp:TextBox ID="txtPassWordFirm" runat="server"></asp:TextBox> <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="txtPassWordFirm" ControlToCompare="txtPassWord" ErrorMessage="兩次輸入密碼不一致!"></asp:CompareValidator> </td> </tr>
輸入資訊驗證是每個系統或軟體必不可少的功能,安全驗證是增強系統安全性、可靠性的前提保證,輸入驗證智能化是我們發展的趨勢,根據使用者輸入意圖,智能輸入、智能提示資訊,才會是軟體更方便使用者,例如資料字典的使用,可以自動匹配使用者輸入資訊;驗證功能不只有控制項可以實現,還可以用一些指令碼如JavaScript來處理用戶端指令碼驗證,減少伺服器負擔,我們需要更智能化的驗證方式。
JS表單驗證:http://blog.163.com/qinyixin_0711/blog/static/139340070201071823916331/