第6章 資料驗證、HTTP物件與錯誤處理 6-1 資料驗證的基礎 6-2 基本驗證控制項 6-3 進階驗證控制項

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
第6章 HTML控件和Web服务器控件 本章讲述的主要内容 6.1 ASP.NET控件概述 6.2 标准服务器端控件 6.3 数据验证控件
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
Chapter 7 網頁應用程式與狀態管理.
Ch08 ASP.NET的HTTP物件 網頁程式設計.
題目:十六對一多工器 姓名:李國豪 學號:B
《ASP.NET数据库网站设计教程(C#版)》
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Ch07 表單欄位驗證控制項 網頁程式設計.
JAVA vs. SQL Server 建國科技大學 資管系 饒瑞佶 2013/4 V1.
JDK 安裝教學 (for Win7) Soochow University
2-3 基本數位邏輯處理※.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Google Data API Spreadsheet
Controls.
HiNet 光世代非固定制 用戶端IPv6設定方式說明
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
安裝JDK 安裝Eclipse Eclipse 中文化
網頁切換移轉 JS vs. ASP.NET.
OpenID與WordPress使用說明
第4章 使用验证控件.
主 讲 教 师:陆有军 Web技术与应用 第四章 内部对象 主 讲 教 师:陆有军
ASP.NET程式追蹤與偵錯.
行動裝置如何使用東海大學SSLVPN 2016/08/25
FTP檔案上傳下載 實務與運用.
網頁切換移轉 JS vs. ASP.NET.
Chapter 6 資料驗證控制項.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
表單(Form).
Java程式設計 Eclipse.
第一單元 建立java 程式.
VS.NET 2003 IDE.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
第10章 Web應用程式的資料分享 10-1 Web應用程式的基礎 10-2 設定ASP.NET的Web應用程式 10-3 網頁間的資料分享
第4章 ASP.NET的HTTP物件、輸出入與Cookie處理
第 19 章 XML記憶體執行模式.
表單(Form).
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
表格(HTML – FORM).
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
第4章 ASP.NET服务器控件.
期末考.
挑戰C++程式語言 ──第8章 進一步談字元與字串
Controls.
VS.NET 2003 IDE.
如何使用Gene Ontology 網址:
向导控件的样式 当创建了一个向导控件时,系统会自动生成向导控件的 HTML 代码,示例代码如下所示。
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
雲端計算.
利用 EditorConfig 自訂文字編輯器設定
表格(HTML – FORM)
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
編輯網頁可用那些應用程式? 記事本 Word FrontPage Dreamweaver.
Dreamweaver 進階網頁製作 B 許天彰.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
Cloud Training Material- 事件 Sherman Wang
電子郵件簡報.
連結資料庫 MYSQL.
多站台網路預約系統之 AJAX即時資料更新機制
開發Java程式語言的工具 JDK.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Jquery Mobile開發須知 周季賢.
Develop and Build Drives by Visual C++ IDE
手機APP連線統計網站 (EDUFOR4G)
InputStreamReader Console Scanner
Presentation transcript:

第6章 資料驗證、HTTP物件與錯誤處理 6-1 資料驗證的基礎 6-2 基本驗證控制項 6-3 進階驗證控制項 6-4 ASP.NET的HTTP物件 6-5 ASP.NET的錯誤處理

6-1 資料驗證的基礎 6-1-1 ASP.NET驗證控制項 6-1-2 伺服端或客戶端的資料驗證

6-1-1 ASP.NET驗證控制項-說明 ASP.NET提供「驗證控制項」(Validation Controls)可以自動建立伺服端或客戶端的資料驗證功能,幫助我們執行Web表單欄位資料的驗證。 驗證控制項單獨存在並沒有意義,需要將驗證控制項和輸入或選擇控制項結合起來,才能執行指定控制項的資料驗證。 多個驗證控制項可以同時針對一個資料輸入控制項進行資料驗證。

6-1-1 ASP.NET驗證控制項-種類1 ASP.NET提供五種驗證控制項,如下表所示:

6-1-1 ASP.NET驗證控制項-種類2 除了上述驗證控制項外,還提供ValidationSummary控制項,可以顯示整個Web表單的驗證錯誤訊息,如下表所示:

6-1-1 ASP.NET驗證控制項-在Visual Studio Community建立驗證控制項 按二下控制項或以拖拉方式,即可在Web Form表單新增驗證控制項

6-1-1 ASP.NET驗證控制項-共通屬性 在ASP.NET的各種驗證控制項都擁有一些共通屬性,常用的共通屬性說明,如下表所示:

6-1-2 伺服端或客戶端的資料驗證- 說明 ASP.NET驗證控制項可以使用EnableClientScript屬性來決定是否自動建立客戶端資料驗證的Jscript程式碼,或只能使用伺服端資料驗證,其說明如下所示: 客戶端資料驗證(Client-Side Validation):尚未送到伺服端前,在客戶端瀏覽器進行檢查,即使用Jscript程式碼執行資料檢查。 伺服端資料驗證(Server-Side Validation):伺服端資料驗證是在資料送到伺服端後,才進行資料檢查。

6-1-2 伺服端或客戶端的資料驗證- Page物件的IsValid屬性 當在Web表單加入驗證控制項後,ASP.NET網頁可以使用Page物件的IsValid屬性來確認表單是否通過驗證,如下所示: if (Page.IsValid) { …… } 上述if條件在確認IsValid屬性為true時,就表示通過驗證,接著就可以執行Web表單的處理。

6-1-2 伺服端或客戶端的資料驗證- Button控制項的CausesValidation屬性 Button控制項的CausesValidation屬性可以決定Web 表單是否執行驗證控制項的資料驗證,如果屬性值為False,表示當表單送回時,忽略驗證控制項的資料驗證;預設值True是需要執行資料驗證。

6-1-2 伺服端或客戶端的資料驗證- UnobtrusiveValidationMode驗證模式 .NET Framework 4.5之後版本預設啟用UnobtrusiveValidationMode模式,使用jQuery函數庫執行客戶端資料驗證,因為沒有安裝jQuery函數庫,需要取消此模式才能正確執行ASP.NET驗證控制項。 請開啟ASP.NET網站,在「方案總管」視窗開啟Web.config檔案,在<configuration>根元素中加入<appSettings>子標籤,如下所示: <appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>

6-2 基本驗證控制項 6-2-1 RequiredFieldValidator控制項 6-2-2 CompareValidator控制項 6-2-3 RangeValidator控制項 6-2-4 ValidationSummary控制項

6-2-1 RequiredFieldValidator控制項-說明 RequireFieldValidator

6-2-1 RequiredFieldValidator控制項-範例網站 ASP.NET網站:Ch6_2_1 在ASP.NET網頁建立登入表單,使用TextBox控制項輸入使用者名稱和密碼,並且使用RequiredFieldValidator控制項檢查欄位資料,如下圖所示:

6-2-2 CompareValidator控制項-說明

6-2-2 CompareValidator控制項-屬性1 控制項除了共同屬性外的相關屬性說明,如下表所示:

6-2-2 CompareValidator控制項-Operator屬性

6-2-2 CompareValidator控制項-範例網站 ASP.NET網站:Ch6_2_2 在ASP.NET網頁新增3個TextBox控制項後,使用2個CompareValidator控制項檢查2次輸入的密碼是否相同,和數量一定需要大於等於1,如下圖所示: 密碼一定要輸入,才會比較是否相同

6-2-3 RangeValidator控制項-說明

6-2-3 RangeValidator控制項-屬性 控制項除了共通屬性外的相關屬性說明,如下表所示:

6-2-3 RangeValidator控制項-範例網站 ASP.NET網站:Ch6_2_3 在ASP.NET網頁新增TextBox控制項輸入成績後,使用RangeValidator控制項檢查成績範圍是否是在0~100之間,如下圖所示:

6-2-4 ValidationSummary控制項-說明

6-2-4 ValidationSummary控制項-範例網站 ASP.NET網站:Ch6_2_4 在ASP.NET網頁建立網站註冊表單輸入使用者名稱和2次密碼,欄位使用RequiredFieldValidator和CompareValidator控制項執行資料驗證,最後使用ValidationSummary控制項顯示驗證錯誤的摘要資訊,如右圖所示: 密碼一定要輸入,才會比較是否相同 ValidationSummary

6-3 進階驗證控制項 6-3-1 RegularExpressionValidator控制項 6-3-2 CustomValidator控制項

6-3-1 RegularExpressionValidator控制項- 說明與屬性

6-3-1 RegularExpressionValidator控制項- 正規運算式的基礎 在正規運算式的範本字串是由字面值(Literals,即字串常數)和萬用字元所組成,其中的字元擁有特殊的意義,屬於一種小型的字串比對語言,正規運算式引擎能夠將定義的正規運算式和字串進行比較,引擎傳回布林值,True表示字串符合範本字串的定義;False表示不符合。

6-3-1 RegularExpressionValidator控制項- 字元集(說明) 正規運算式範本字串的字面值是由英文字母、數字和一些特殊字元所組成,如果字面值的字元是有特殊意義的字元時,我們需要使用「\」符號來指明是字面值,例如:「.」的字面值需要使用「\.」來表示。

6-3-1 RegularExpressionValidator控制項- 字元集(種類) 字面值還可以使用「[」和「]」符號組合成一組字元集,每一個字元集代表字串中的字元需要符合的條件。

6-3-1 RegularExpressionValidator控制項- 字元集(Escape字串)

6-3-1 RegularExpressionValidator控制項-萬用字元 正規運算式的範本字串除了前述的字元集外,還可以加上萬用字元來定義比對的方式、出現位置和次數。常用的萬用字元如下表所示:

6-3-1 RegularExpressionValidator控制項- 常用的範本字串

6-3-1 RegularExpressionValidator控制項-範例網站 ASP.NET網站:Ch6_3_1 在ASP.NET網頁新增TextBox控制項輸入電子郵件地址,使用RegularExpressionValidator控制項檢查電子郵件格式是否正確,RequiredFieldValidator控制項檢查是否有輸入郵件地址,如下圖所示: 預計進度 (2016/12/23)

6-3-2 CustomValidator控制項-說明

6-3-2 CustomValidator控制項-屬性 控制項除了共通屬性外的相關屬性說明,如下表所示: CustomValidator控制項的相關事件說明,如下表所示:

6-3-2 CustomValidator控制項-事件處理程序 例如:當ServerValidator事件觸發後,就執行事件處理程序來檢查使用者名稱的字串,如下所示: protected void validCustom_ServerValidate(object source, ServerValidateEventArgs args) { if (args.Value.StartsWith("_")) args.IsValid = false; else args.IsValid = true; }

6-3-2 CustomValidator控制項-範例網站 ASP.NET網站:Ch6_3_2 在ASP.NET網頁新增TextBox控制項輸入使用者名稱後,使用CustomValidator控制項撰寫程序來檢查使用名稱不能是「_」底線開頭,如下圖所示:

6-4 ASP.NET的HTTP物件 6-4-1 Response物件 6-4-2 Request物件 6-4-3 Server物件

6-4 ASP.NET的HTTP物件 ASP.NET的Response、Request、Server、Application和Session物件都有對應.NET Framework的類別,這些都是以Http字頭開始的類別,筆者在本書稱為HTTP物件。 在這一節筆者將說明Response、Request和Server物件的常用方法和屬性,關於Application和Session物件的說明請參閱第7章。

6-4-1 Response物件- Response.Write()方法 Response.Write()方法可以在ASP.NET網頁將資料輸出到瀏覽器顯示,輸出內容可以是字串、HTML標籤或變數,如下所示: Response.Write(title + "<br/>"); Response.Write("歡迎使用ASP.NET程式設計<br/>"); 上述程式碼分別輸出變數和字串,而且在輸出字串內含有HTML標籤。

6-4-1 Response物件-Response.Redirect()方法 Response.Redirect()方法可以將網頁轉址到其他URL網址或ASP.NET網頁,如下所示: Response.Redirect("http://www.flag.com.tw"); 上述程式碼可以轉址至旗標出版公司的網站。

6-4-1 Response物件-範例網站 ASP.NET網站:Ch6_4_1 在ASP.NET網頁的TextBox控制項輸入網址,按下按鈕,就可以轉址至到其他URL網址或ASP.NET網頁,如下圖所示: 注意: “http:// 一定要輸入

6-4-2 Request物件-取得伺服器的系統資訊(說明) HTTP通訊協定傳送的資料不只有網址,在HTTP標頭資訊還提供瀏覽器版本、時間等環境變數和表單欄位資料,在這一節將說明如何取得一些常用的環境變數。 伺服器的系統資訊可以使用Request物件的ServerVariables屬性來取得,這是一個集合物件,以參數的Server變數字串來取得系統資訊。

6-4-2 Request物件-取得伺服器的系統資訊(常用Server變數)

6-4-2 Request物件-取得伺服器的系統資訊(範例) 在ASP.NET網頁可以使用Request物件的ServerVariables屬性取得指定的系統資訊,如下所示: IPAddress = Request.ServerVariables["REMOTE_ADDR"]; path = Request.ServerVariables["PATH_INFO"]; 上述程式碼參數是Server變數的環境變數名稱字串,可以取得指定環境變數的值,以此例為使用者IP位址和目前ASP.NET網頁的虛擬路徑。 http://120.126.19.159/sample/

6-4-2 Request物件- 瀏覽器的相關資訊(說明) 客戶端瀏覽器在連線Web伺服器時,「HTTP使用者代理人標頭」(HTTP User Agent Header)資訊會傳送給伺服器,在此標頭資訊包含瀏覽器的相關資訊。 在ASP.NET網頁可以使用Request物件的Browser屬性取得這些資訊,如下所示: HttpBrowserCapabilities hbc = Request.Browser; 上述程式碼在取得HttpBrowserCapabilities物件後,就可以使用相關屬性取得瀏覽器支援的功能。

6-4-2 Request物件-瀏覽器的相關資訊(屬性)

6-4-2 Request物件-範例網站 ASP.NET網站:Ch6_4_2 在ASP.NET網頁的TextBox控制項輸入Server變數字串,按下按鈕可以顯示環境變數值,按【瀏覽器】鈕可以顯示瀏覽器的相關資訊,如下圖所示:

6-4-3 Server物件-Server.MapPath()方法 如果想取得目前執行ASP.NET網頁的虛擬目錄,請使用ServerVariables集合物件的PATH_INFO參數取得ASP.NET檔案的虛擬路徑,然後配合Server.MapPath()方法轉換成實際路徑,如下所示: path = Server.MapPath( Request.ServerVariables["PATH_INFO"]); 如果是指定的ASP.NET網頁或檔案的實際路徑,如下所示: path = Server.MapPath("Default.aspx");

6-4-3 Server物件-Server.Transfer()方法 Server.Transfer()方法是用來取代Response.Redirect()方法執行轉址功能,Redirect()方法浪費較多頻寬在瀏覽器和伺服器之間的通訊,Transfer()方法的轉址操作完全在伺服端完成,並不會浪費頻寬,其使用方式和Redirect()方法幾乎完全相同,如下所示: Server.Transfer("http://www.hinet.net"); Check 是否有問題?

6-5 ASP.NET的錯誤處理 6-5-1 偵錯模式 6-5-2 例外處理

6-5-1 偵錯模式-說明 在ASP.NET網頁如果是單純的語法錯誤,在編譯階段,原始程式錯誤(Source Error)區塊就會指出錯誤產生的程式碼行列號,和顯示產生錯誤的程式碼。 如果ASP.NET網頁是在伺服端執行時才發生錯誤,我們可以開啟偵錯模式來顯示進一步的錯誤資訊。 紅色字指出產生錯誤的程式碼行列號

6-5-1 偵錯模式-開啟 ASP.NET 4.6版預設啟用偵錯模式,如果是4.5版,在下方原始程式錯誤區段並不會顯示紅色造成錯誤的程式碼列,我們需要自行啟用ASP.NET的「偵錯模式」(Debug Mode),如下圖所示:

6-5-2 例外處理-語法 C#語言的例外處理程式敘述,如下所示: try { // 測試的錯誤程式碼 … } catch (Exception ex) { // 錯誤處理的程式碼 finally {

選擇性的程式區塊,不論錯誤是否產生,都會執行此區塊的程式碼,通常是用來作為善後的程式碼 6-5-2 例外處理-說明 例外處理敘述分成三個部分,其說明如下表所示: 程式區塊 說明 try 在try程式區塊是需要錯誤處理的程式碼 catch 如果try程式區塊的程式碼發生錯誤,在catch程式區塊會傳入參數ex的Exception例外物件,可以使用ex.ToString()方法顯示錯誤資訊,或建立錯誤處理的補救程式碼 finally 選擇性的程式區塊,不論錯誤是否產生,都會執行此區塊的程式碼,通常是用來作為善後的程式碼

6-5-2 例外處理-範例網站 ASP.NET網站:Ch6_5_2 在ASP.NET網頁建立try/catch/finally例外處理敘述,可以處理除以0的程式錯誤,如下圖所示: 預計進度 (2016/12/28, 星期三)