1. 程式人生 > >ASP.NET預備知識(四)--Web伺服器驗證控制元件

ASP.NET預備知識(四)--Web伺服器驗證控制元件

1 什麼是驗證控制元件?

希望使用者輸入正確的型別的資料,為了驗證使用者輸入是否滿足要求,必須對輸入的值、範圍或格式進行檢查。

2 .NET中驗證控制元件在哪裡?

在工具箱的驗證分組裡。

3 常用的ASP.NET控制元件幾個?分別是什麼?

 1)CompareValidator控制元件:與給定值比較.

2)CustomValidator控制元件:使用者自己定製校驗邏輯

3)RangeValidator控制元件:檢查控制元件的值是否在給定的有效範圍內。

4RegularExpressValidator控制元件:使用正則表示式驗證使用者輸入的資料是否符合預定義的格式。

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>

         最終得到的效果圖如下所示:

                                    

      和CS的控制元件比起來,CS的控制元件中沒有驗證控制元件哦。