Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 7 章 Web 表單驗證控制項 7-1 表單送回功能( Postback ) 7-2 表單的顯示狀態( Viewstate ) 7-3 表單欄位驗證的基礎 7-4 伺服端的驗證控制項(一) 7-5 伺服端的驗證控制項(二) 7-6 Web 表單的重設按鈕.

Similar presentations


Presentation on theme: "第 7 章 Web 表單驗證控制項 7-1 表單送回功能( Postback ) 7-2 表單的顯示狀態( Viewstate ) 7-3 表單欄位驗證的基礎 7-4 伺服端的驗證控制項(一) 7-5 伺服端的驗證控制項(二) 7-6 Web 表單的重設按鈕."— Presentation transcript:

1 第 7 章 Web 表單驗證控制項 7-1 表單送回功能( Postback ) 7-2 表單的顯示狀態( Viewstate ) 7-3 表單欄位驗證的基礎 7-4 伺服端的驗證控制項(一) 7-5 伺服端的驗證控制項(二) 7-6 Web 表單的重設按鈕

2 7-1 表單送回功能( Postback ) 7-1-1 表單的 IsPostBack 屬性 7-1-2 控制項的 AutoPostBack 屬性

3 7-1 表單送回功能( Postback ) ASP.NET 使用 Web 表單的控制項讓使用者輸入 或選取資料,使用者輸入的資料在用戶端是以 送回功能,將資料送回伺服端進行處理,預設 是送到自已的 ASP.NET 程式,相關的屬性,如 下所示: –Page 物件的 IsPostBack 屬性:檢查是否是第一次載入 ASP.NET 程式,或是已經在用戶端執行過送回。 – 伺服端控制項的 AutoPostBack 屬性:如果 Web 控制 項將 AutoPostBack 屬性設為 True ,當控制項的資料 變更時,就會自動執行用戶端送回。

4 7-1-1 表單的 IsPostBack 屬性 在 Page_Load 事件處理程序可以使用 IsPostBack 屬性檢查是否已經送回資料, 如下所示: If IsPostBack Then If NameTextBox.Text <> "" Then showName.Text = nameTextBox.Text & " 您好 !" End If Else NameTextBox.Text = " 江小魚 " End If

5 7-1-2 控制項的 AutoPostBack 屬 性 - 說明 Web 表單的部分控制項擁有 AutoPostBack 屬性,例如: DropDownList 控制項,如 下所示: <asp:DropDownList id="Username" Width="100px" AutoPostBack="True" OnSelectedIndexChanged="Change_Name" runat="Server">

6 7-1-2 控制項的 AutoPostBack 屬 性 - 控制項 AutoPostBack 屬性支援的 Web 控制項和事 件,如下表所示:

7 7-2 表單的顯示狀態( Viewstate ) 7-2-1 顯示狀態的基礎 7-2-2 取消顯示狀態 7-2-3 如何保留 PostBack 表單送 回的其它資料

8 7-2-1 顯示狀態的基礎 - 說明 「顯示狀態」( ViewState )屬於一種 ASP.NET 機制,能夠保留伺服端控制項的狀態,也就是 儲存的值,例如:在 Web 表單擁有一個 TextBox 控制項,一旦輸入值,不論送回 ( Postback )多少次,除非更改 TextBox 控制項 的值,否則顯示狀態都能夠自動保留其值。 –HTML 表單沒有顯示狀態功能 –Web 表單擁有顯示狀態功能

9 7-2-1 顯示狀態的基礎 - 原理 顯示狀態看起來是很神奇,事實上,它是使用 隱藏欄位儲存狀態資料,如下所示: <form name="_ctl0" method="post" action="Ch7-2ViewState.aspx" id="_ctl0"> 姓名 : 選擇色彩 : ………..

10 7-2-2 取消顯示狀態 在 ASP.NET 程式預設使用顯示狀態儲存控制項 的內容,取消整個 ASP.NET 顯示狀態,如下所 示: 上述 Page 指引的 EnableViewState 屬性為 False , 表示取消顯示狀態, True 為啟動顯示狀態。如 果只有指定控制項需要取消顯示狀態,如下所 示:

11 7-2-3 如何保留 PostBack 表單送 回的其它資料 ASP.NET 提供多種方法可以用來保留這 些變數或參數值,如下所示: – 使用 Cookie 保留變數值。 – 使用 Session 變數保留變數值。 – 使用 HtmlInputHidden 控制項保留變數值。 – 使用顯示狀態的 StateBag 物件保留變數值。

12 7-3 表單欄位驗證的基礎 7-3-1 表單欄位驗證的種類 7-3-2 ASP.NET 的伺服端驗證控制項

13 7-3-1 表單欄位驗證的種類 表單欄位的驗證以把關的位置來區分, 可以分為兩種,如下所示: – 客戶端表單欄位驗證:這是指在尚未送到伺 服端前,在客戶端的瀏覽程式進行檢查,即 使用 JavaScript 或 VBScript 程式碼執行欄位值 的檢查。 – 伺服端表單欄位驗證:伺服端的表單欄位驗 證是在資料送到伺服端後,才進行資料的檢 查。

14 7-3-2 ASP.NET 的伺服端驗證控 制項 - 種類

15 7-3-2 ASP.NET 的伺服端驗證控 制項 - 使用 如果 Web 表單擁有上表的驗證控制項, 就可以檢查 Page 物件的 IsValid 屬性,以 確認表單是否已經通過驗證,如下所示: If Page.IsValid Then Lname.Text = " 姓名 : " & name.Text Lpass.Text = " 密碼 : " & pass.Text End If

16 7-4 伺服端的驗證控制項(一) 7-4-1 RequiredFiledValidator 驗證控制項 7-4-2 CompareValidator 驗證控制項 7-4-3 RangeValidator 驗證控制項

17 7-4-1 RequiredFiledValidator 驗 證控制項 RequiredFiledValidator 驗證控制項可以檢 查指定控制項是否沒有輸入資料或選取 選項,如下所示: <asp:RequiredFieldValidator id="validName" ControlToValidate="name" ErrorMessage=" 請輸入使用者姓名 !" runat="Server"/>

18 7-4-2 CompareValidator 驗證控 制項 CompareValidator 驗證控制項可以用來比 較兩個控制項的值,或是和一個指定的 常數值進行比較,如下所示: <asp:CompareValidator id="validComp" ControlToValidate="pass" ControlToCompare = "pass1" Type="String" Display="Dynamic" ErrorMessage=" 輸入的密碼不相同 !" runat="Server"/>

19 7-4-3 RangeValidator 驗證控制 項 RangeValidator 驗證控制項可以用來檢查 控制項的值,是否在一個指定的範圍, 如下所示: <asp:RangeValidator id="validRange" ControlToValidate="age" Display="Dynamic" Type="Integer" MinimumValue="21" MaximumValue="80" ErrorMessage=" 年齡的範圍是 21 ~ 80!" runat="server"/>

20 7-5 伺服端的驗證控制項(二) 7-5-1 正規語言的基礎 7-5-2 RegularExpressionValidator 驗 證控制項 7-5-3 CustomValidator 驗證控制項 7-5-4 ValidationSummary 驗證控制 項

21 7-5-1 正規語言的基礎 - 說明 「正規語言」( Regular Expression )是一個範 本字串,能夠進行字串的比對和取代,例如: 檢查使用者名稱、身份証字號等字串格式是否 符合需求。 在正規語言的範本字串中,每一個字元都有特 殊意義,屬於一種小型語言,正規語言解譯程 式或稱引擎能夠將定義的正規語言和字串變數 進行比較,解譯程式傳回布林值, True 表示字 串符合範本字串的定義, False 表示不符合。

22 7-5-1 正規語言的基礎 - 字元與 字元集

23 7-5-1 正規語言的基礎 - 語法 1 正規語言的範本字串是一個字串,只是字串擁 有前述的字元符號和之後特殊的比較字元。首 先需要定義範本字串在比對字串出現的位置, 如下表所示:

24 7-5-1 正規語言的基礎 - 語法 2 正規語言不只可以定義字串出現的位置,還可 以定義各字元出現的次數,如下表所示:

25 7-5-1 正規語言的基礎 - 使用 ASP.NET 預設匯入 System.Text.RegularExpressions 的名稱空間,我 們可以直接使用 Regex 建構子,建立正規語言 的物件,如下所示: Dim regExp As Regex = New Regex("[A-Z]{1}[0-9]{9}") Dim regExp1 As Regex = New Regex("[0-9]{1}[\w]*", _ RegexOptions.IgnoreCase) 在建立好 Regex 物件後,可以使用 isMatch 方法 比對參數的字串是否符合範本字串,如下所示: If regExp.IsMatch(code.Text) Then ………….. End If

26 7-5-2 RegularExpressionValidator 驗證 控制項 RegularExpressionValidator 驗證控制項是 使用正規語言的範本字串比對控制項的 值,如下所示: <asp:RegularExpressionValidator id="ValidRegxEmail" ControlToValidate="email" Display="Static" ValidationExpression="[\w\.]+@[\w\.]+\.(com|net|org|e du|mil)[\w\.]*" ErrorMessage=" 電子郵件地址的格式錯誤 " runat="Server"/>

27 7-5-3 CustomValidator 驗證控制 項 CurstomValidator 驗證控制項可以建立伺 服端或客戶端欄位驗證功能,我們可以 自行撰寫程序來驗證控制項的值,如下 所示: <asp:CustomValidator id="validCustom" ControlToValidate="code" Display="Dynamic" OnServerValidate="Check_Code" ErrorMessage=" 身份証字號驗證錯誤 !" runat="Server"/>

28 7-5-4 ValidationSummary 驗證控 制項 ValidationSummary 驗證控制項是用來顯 示驗證錯誤的摘要資訊,也就是將所有 驗證錯誤訊息以摘要方式顯示,如下所 示: <asp:ValidationSummary ID="validSummary" HeaderText="Web 表單欄位的錯誤資料 : " DisplayMode="BulletList" runat="Server"/>

29 7-6 Web 表單的重設按鈕 7-6-1 取消客戶端驗證控制項的功能 7-6-2 取消伺服端驗證控制項的功能

30 7-6-1 取消客戶端驗證控制項的 功能 取消客戶端驗證功能改為伺服端驗證,使用的 是 Page 指引的 ClientTarget 屬性,如下所示: 上述 Page 指引的 ClientTarget 屬性可以指定瀏覽 程式的版本,其值如下所示: –UpLevel :這是指客戶端瀏覽程式使用 Internet Explorer 5.5 或以上的版本。 –DownLevel :這是指客戶端瀏覽程式使用 Internet Explorer 5.5 以下的版本,或非 Internet Explorer 瀏覽程式。

31 7-6-2 取消伺服端驗證控制項的 功能 暫時取消伺服端控制項的功能,如下所示: validComp.IsValid = True validName.IsValid = True validPass.IsValid = True 上述程式碼將驗證控制項的 IsValid 屬性設為 True 表示通過驗證,如此可以騙過 Page.IsValid 屬性,而不會顯示出驗證錯誤的訊息。 永遠取消伺服端驗證控制項的功能,只需將 Web 控制項的 Enable 屬性設為 False ,如下: validComp.Enabled = False


Download ppt "第 7 章 Web 表單驗證控制項 7-1 表單送回功能( Postback ) 7-2 表單的顯示狀態( Viewstate ) 7-3 表單欄位驗證的基礎 7-4 伺服端的驗證控制項(一) 7-5 伺服端的驗證控制項(二) 7-6 Web 表單的重設按鈕."

Similar presentations


Ads by Google