ASP.NET預備知識(四)--Web伺服器驗證控制元件
1 什麼是驗證控制元件?
希望使用者輸入正確的型別的資料,為了驗證使用者輸入是否滿足要求,必須對輸入的值、範圍或格式進行檢查。
2 .NET中驗證控制元件在哪裡?
在工具箱的驗證分組裡。
3 常用的ASP.NET控制元件幾個?分別是什麼?
1)CompareValidator控制元件:與給定值比較.
2)CustomValidator控制元件:使用者自己定製校驗邏輯
3)RangeValidator控制元件:檢查控制元件的值是否在給定的有效範圍內。
4)RegularExpressValidator控制元件:使用正則表示式驗證使用者輸入的資料是否符合預定義的格式。
5)RequiredFieldValidator
6)ValidationSummary控制元件:彙總Web頁上所有驗證控制元件的錯誤資訊。
追本溯源:
所有的驗證控制元件都是從基類BaseValidator中繼承而來的,為驗證控制元件提供了一些公有的屬性:
成員 |
含義 |
ControlToValidator |
需要驗證輸入控制元件的ID號 |
EnableClientScript |
是否允許進行客戶端驗證(用js寫函式) |
Enabled |
是否進行伺服器端驗證 |
ErrorMessage |
報錯資訊 |
IsValid |
確定輸入控制元件的值是否通過驗證 |
4 怎樣使用ASP.Net 驗證控制元件?
和新增其他伺服器控制元件一樣,即可啟用對使用者輸入的驗證。
在控制元件的ControlToValidator屬性中賦予要關聯驗證控制元件的ID號,關聯起來。
客戶端驗證?伺服器驗證?
客戶端的驗證
為了使用者體驗,防止人家提交很多遍都填不對例如一些合法性檢查,比如字串長度,非法字元,正則表示式,非空等。大多是友好提示(本質不靠譜,但響應快。)
伺服器端的驗證
業務邏輯、安全性需要的真正的驗證,比如密碼對不對,需要在後臺寫程式碼來有沒有許可權之類的。需要提交資料並儲存的地方,放到伺服器驗證。
混合驗證:
客戶端和伺服器都需要驗證啦。
DEMO:
這裡面主要說說客戶端驗證和伺服器驗證兩種方式,以CustomValidator控制元件為例:
驗證使用者輸入的是否為偶數
客戶端驗證:
在這裡用到JavaScrip程式碼:
<script language="javascript " type="text/javascript">
/*驗證是否為偶數函式*/
function ClientValidate(source, args)
{
if ((args.value % 2) == 0)
args.IsValid = true;
else
args.IsValid = false;
}
</script>
客戶端驗證控制元件程式碼:
<asp:CustomValidator ID="CustomValidator1" runat="server"
ControlToValidate="txtOS" ErrorMessage="不是一個偶數!" ClientValidationFunction="ClientValidate"></asp:CustomValidator>
伺服器驗證,C#程式碼:
public partial class _Default : System.Web.UI.Page
{
//伺服器端驗證輸入是否為偶數。
protected void cvInput_ServerValidate(object source, ServerValidateEventArgs args)
{
//獲取驗證控制元件輸入值。
int value = int.Parse(args.Value);
//判斷是否為偶數。
if ((value % 2) == 0)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
}
伺服器驗證,控制元件程式碼:
<asp:CustomValidator ID="cvInput" runat="server"
ControlToValidate="txtOS" ErrorMessage="不是一個偶數!" OnServerValidate="ServerValidate" ></asp:CustomValidator>
最終得到的效果圖如下所示: