การควบคุมการตรวจสอบของ ASP.NET จะตรวจสอบความถูกต้องของข้อมูลที่ผู้ใช้ป้อนเพื่อให้แน่ใจว่าไม่สามารถจัดเก็บข้อมูลที่ไม่มีประโยชน์ ไม่ได้รับอนุญาต และขัดแย้งกันได้
ASP.NET ให้ลักษณะต่อไปนี้ของการควบคุมการตรวจสอบ:
จำเป็นต้องใช้FieldValidator
เครื่องมือตรวจสอบช่วง
เปรียบเทียบ Validator
เครื่องมือตรวจสอบนิพจน์ทั่วไป (RegularExpressionValidator)
เครื่องมือตรวจสอบที่กำหนดเอง (CustomValidator)
การควบคุมสรุปการตรวจสอบ (ValidationSummary)
คลาสการตรวจสอบความถูกต้องสืบทอดมาจากคลาส BaseValidator ดังนั้นจึงสืบทอดคุณสมบัติและวิธีการของมัน ดังนั้น การเรียนรู้คุณสมบัติและวิธีการของชั้นเรียนพื้นฐานนี้ ซึ่งเป็นพื้นฐานของการควบคุมประสิทธิผลทั้งหมด จะเป็นประโยชน์อย่างมากต่อการเรียนรู้ในภายหลัง:
ส่วนประกอบ | อธิบาย |
---|---|
ควบคุมเพื่อตรวจสอบ | รับหรือตั้งค่าการควบคุมอินพุตที่จะตรวจสอบ |
แสดง | อธิบายวิธีการแสดงข้อความแสดงข้อผิดพลาด |
เปิดใช้งาน ClientScript | บ่งชี้ว่าลูกค้าได้นำการตรวจสอบมาใช้หรือไม่ |
เปิดใช้งานแล้ว | เปิดหรือปิดการใช้งานเครื่องมือตรวจสอบ |
ข้อความแสดงข้อผิดพลาด | สตริงที่อธิบายข้อผิดพลาด |
ข้อความ | ข้อความที่จะแสดงหากการตรวจสอบล้มเหลว |
ถูกต้อง | บ่งชี้ว่าค่าควบคุมถูกต้องหรือไม่ |
ข้อผิดพลาด SetFocusOn | ไม่ว่าจะตั้งค่าโฟกัสไปที่การควบคุมอินพุตที่เกี่ยวข้องเมื่อการตรวจสอบล้มเหลว |
กลุ่มตรวจสอบความถูกต้อง | รับหรือตั้งชื่อของกลุ่มการตรวจสอบซึ่งมีการควบคุมการตรวจสอบนี้อยู่ |
ตรวจสอบความถูกต้อง | ดำเนินการตรวจสอบการควบคุมอินพุตที่เกี่ยวข้องและอัปเดตคุณสมบัติ IsValid |
การควบคุม RequiredFieldValidator ทำให้แน่ใจว่าฟิลด์ที่จำเป็นไม่ว่างเปล่า ส่วนใหญ่จะผูกไว้กับกล่องข้อความเพื่อให้ผู้ใช้สามารถป้อนลงในกล่องข้อความได้
ไวยากรณ์สำหรับการควบคุมนี้เป็นดังนี้:
<asp:RequiredFieldValidator ID="rfvcandidate" runat="server" ControlToValidate ="ddlcandidate" ErrorMessage="Please choose a candidate" InitialValue="Please choose a candidate"></asp:RequiredFieldValidator>
ตัวควบคุม RangeValidator มีหน้าที่ตรวจสอบว่าค่าที่ป้อนอยู่ภายในช่วงที่กำหนดไว้ล่วงหน้าหรือไม่
มีคุณสมบัติเฉพาะ 3 ประการ:
คุณสมบัติ | อธิบาย |
---|---|
พิมพ์ | มันกำหนดชนิดข้อมูล ชนิดข้อมูลที่ใช้ได้ได้แก่ สกุลเงิน วันที่ คู่ จำนวนเต็ม และสตริง |
ค่าต่ำสุด | โดยจะระบุค่าต่ำสุดในช่วง |
ค่าสูงสุด | ระบุค่าสูงสุดในช่วง |
ไวยากรณ์ของตัวควบคุมนี้เป็นดังนี้:
<asp:RangeValidator ID="rvclass" runat="server" ControlToValidate="txtclass" ErrorMessage="Enter your class (6 - 12)" MaximumValue="12" MinimumValue="6" Type="Integer"></asp:RangeValidator>
ตัวควบคุม CompareValidator ตรวจสอบค่าตามค่าที่ป้อนลงในตัวควบคุมอินพุตอื่น ค่าตัวเลขคงที่ หรือชนิดข้อมูลที่ถูกต้อง
มีคุณสมบัติเฉพาะดังต่อไปนี้:
คุณสมบัติ | อธิบาย |
---|---|
พิมพ์ | มันกำหนดชนิดข้อมูล |
การควบคุมเพื่อเปรียบเทียบ | โดยจะระบุค่าในตัวควบคุมอินพุตที่ต้องการเปรียบเทียบ |
มูลค่าในการเปรียบเทียบ | โดยระบุค่าที่ไม่เปลี่ยนแปลงในตัวควบคุมอินพุต |
ผู้ดำเนินการ | โดยระบุตัวดำเนินการเปรียบเทียบ ค่าที่ใช้ได้ ได้แก่ ความเท่าเทียมกัน อสมการ มากกว่าหรือเท่ากับ น้อยกว่า น้อยกว่าหรือเท่ากับ และการตรวจสอบประเภทข้อมูล |
ไวยากรณ์พื้นฐานของตัวควบคุมนี้จะเป็นดังนี้:
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator"></asp:CompareValidator>
การควบคุม RegularExpressionValidator ช่วยให้คุณสามารถกำหนดความถูกต้องของอินพุตโดยจับคู่กับนิพจน์ทั่วไป นิพจน์ทั่วไปถูกตั้งค่าในคุณสมบัติ ValidationExpression
ตารางต่อไปนี้สรุปโครงสร้างไวยากรณ์ที่ใช้กันทั่วไปในนิพจน์ทั่วไป:
ตัวละครหลบหนี | อธิบาย |
---|---|
ข | ตรงกับคีย์ Backspace |
t | แท็บการแข่งขัน |
r | ตรงกับปุ่ม Enter |
v | จับคู่อักขระแท็บแนวตั้ง |
ฉ | จับคู่อักขระฟีดแบบฟอร์ม |
n | จับคู่บรรทัดใหม่ |
- | ตัวละครหลบหนี |
นอกจากการจับคู่อักขระแบบธรรมดาแล้ว ยังสามารถตั้งค่าอักขระประเภทหนึ่งให้ตรงกันได้อีกด้วย
ไวด์การ์ด | อธิบาย |
---|---|
- | สามารถจับคู่อักขระใดก็ได้ยกเว้น n |
[เอบีซีดี] | สามารถจับคู่ตัวละครใดก็ได้ในชุด |
[^เอบีซีดี] | แยกตัวละครออกจากชุด |
[2-7a-mA-M] | จับคู่อักขระใดๆ ภายในช่วงที่ระบุ |
w | จับคู่กลุ่มอักขระตัวอักษรและตัวเลขและขีดล่าง |
ว | จับคู่อักขระที่ไม่ใช่คำใดๆ |
s | จับคู่อักขระ เช่น ช่องว่าง แท็บหยุด ขึ้นบรรทัดใหม่ ฯลฯ |
ส | จับคู่อักขระที่ไม่เว้นวรรค |
d | จับคู่อักขระทศนิยมใดๆ |
D | จับคู่อักขระที่ไม่ใช่ทศนิยม |
ตัวระบุปริมาณสามารถระบุจำนวนคำเฉพาะที่มีอักขระเกิดขึ้น
ปริมาณ | อธิบาย |
---|---|
- | การแข่งขันเป็นศูนย์หรือมากกว่า |
- | การแข่งขันหนึ่งรายการขึ้นไป |
- | การแข่งขันเป็นศูนย์หรือหนึ่งรายการ |
{N} | N นัด |
{น,} | ไม่มีการแข่งขันหรือมากกว่านั้น |
{น,เอ็ม} | การจับคู่ระหว่าง N และ M |
ไวยากรณ์พื้นฐานของตัวควบคุมนี้จะเป็นดังนี้:
<asp:RegularExpressionValidator ID="string" runat="server" ErrorMessage="string" ValidationExpression="string" ValidationGroup="string"></asp:RegularExpressionValidator>
การควบคุม CustomValidator อนุญาตให้เขียนรูทีนการตรวจสอบเฉพาะฝั่งไคลเอ็นต์และเซิร์ฟเวอร์เพื่อตรวจสอบค่า
การตรวจสอบลูกค้าเสร็จสิ้นอย่างเหมาะสมผ่าน ClientValidationFunction รูทีนการตรวจสอบฝั่งไคลเอ็นต์ควรเขียนด้วยภาษาสคริปต์ที่เบราว์เซอร์เข้าใจ เช่น JavaScript หรือ VBScript
รูทีนการตรวจสอบฝั่งเซิร์ฟเวอร์ควรถูกสร้างขึ้นโดยตัวจัดการเหตุการณ์ ServerValidate ของตัวควบคุม รูทีนการตรวจสอบฝั่งเซิร์ฟเวอร์ควรเขียนด้วยภาษา .Net เช่น C# หรือ VB.Net
ไวยากรณ์พื้นฐานของตัวควบคุมนี้จะเป็นดังนี้:
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction=.cvf_func. ErrorMessage="CustomValidator"></asp:CustomValidator>
ตัวควบคุม ValidationSummary ไม่ดำเนินการตรวจสอบใดๆ แต่แสดงข้อมูลสรุปของข้อผิดพลาดทั้งหมดบนเพจ ข้อมูลสรุปนี้จะแสดงค่าของคุณสมบัติ ErrorMessage ของการควบคุมการตรวจสอบที่ล้มเหลวทั้งหมด
รายการแอตทริบิวต์รวมสองรายการต่อไปนี้ข้อความแสดงข้อผิดพลาด:
ShowSummary : แสดงข้อมูลข้อผิดพลาดในรูปแบบพิเศษ
ShowMessageBox : แสดงข้อความแสดงข้อผิดพลาดในหน้าต่างแยกต่างหาก
ไวยากรณ์พื้นฐานของตัวควบคุมนี้จะเป็นดังนี้:
<asp:ValidationSummary ID="ValidationSummary1" runat="server" DisplayMode = "BulletList" ShowSummary = "true" HeaderText="Errors:" />
หน้าที่ซับซ้อนจะมีชุดข้อมูลที่แตกต่างกันในระดับที่แตกต่างกัน ในกรณีนี้ กลุ่มต่างๆ จะมีการตรวจสอบที่แตกต่างกัน สถานการณ์นี้สามารถแก้ไขได้โดยใช้กลุ่มการตรวจสอบ
เมื่อต้องการสร้างกลุ่มการตรวจสอบ คุณต้องวางการควบคุมอินพุตและการควบคุมการตรวจสอบในกลุ่มตรรกะเดียวกันโดยการตั้งค่าคุณสมบัติ ValidationGroup
ตัวอย่างต่อไปนี้จะอธิบายแบบฟอร์มสี่ส่วนที่ทั้งโรงเรียนจะต้องกรอกเพื่อลงสมัครชิงตำแหน่งประธานาธิบดี ที่นี่ เราจะใช้การควบคุมการตรวจสอบเพื่อตรวจสอบความถูกต้องของสิ่งที่ผู้ใช้ป้อน
นี่คือลักษณะที่ปรากฏในมุมมองออกแบบ:
รหัสสำหรับส่วนนี้เป็นดังนี้:
<form id="form1" runat="server"> <table> <tr> <td colspan="3" align="center"> <asp:Label ID="lblmsg" Text="แบบฟอร์มการเลือกตั้งประธานาธิบดี : เลือกของคุณ ประธาน" runat="เซิร์ฟเวอร์" /> </td> </tr> <tr> <td> ผู้สมัคร: </td> <td> <asp:DropDownList ID="ddlcandidate" runat="server" > <asp:ListItem>โปรดเลือกผู้สมัคร</asp:ListItem> <asp:ListItem>M H Kabir</asp:ListItem> <asp:ListItem>Steve Taylor</asp:ListItem> <asp:ListItem>John Abraham</ asp:ListItem> <asp:ListItem>วีนัสวิลเลียมส์</asp:ListItem> </asp:DropDownList> </td> <td> <asp:RequiredFieldValidator ID="rfvcandidate" runat="server" ControlToValidate ="ddlcandidate" ErrorMessage="โปรดเลือกผู้สมัคร" InitialValue="โปรดเลือกผู้สมัคร"> </asp:RequiredFieldValidator> </td> </tr> <tr> < td> บ้าน: </td> <td> <asp:RadioButtonList ID = "rblhouse" runat = "เซิร์ฟเวอร์" RepeatLayout = "ไหล"> <asp:ListItem>สีแดง</asp:ListItem> <asp:ListItem>สีน้ำเงิน</asp:ListItem> <asp:ListItem>สีเหลือง</asp:ListItem> <asp:ListItem>สีเขียว</asp:ListItem> </ asp:RadioButtonList> </td> <td> <asp:RequiredFieldValidator ID = "rfvhouse" runat = "เซิร์ฟเวอร์" ControlToValidate = "rblhouse" ErrorMessage="ป้อนชื่อบ้านของคุณ" > </asp:RequiredFieldValidator> <br /> </td> </tr> <tr> <td> คลาส: </td> <td> <asp:TextBox ID="txtclass " runat="เซิร์ฟเวอร์"></asp:TextBox> </td> <td> <asp:RangeValidator ID="rvclass" runat="เซิร์ฟเวอร์" ControlToValidate="txtclass" ErrorMessage="ป้อนคลาสของคุณ (6 - 12)" MaximumValue="12" MinimumValue="6" Type="Integer"> </asp:RangeValidator> </td> </tr> <tr> <td> อีเมล: </td> <td> <asp:TextBox ID="txtemail" runat="server"> </asp:TextBox> </td> <td> <asp:RegularExpressionValidator ID = "remail" runat = "เซิร์ฟเวอร์" ControlToValidate = "txtemail" ErrorMessage = "ป้อนอีเมลของคุณ" ValidationExpression = "w+([-+.']w+)*@w+([ -.]w+)*.w+([-.]w+)*"> </asp:RegularExpressionValidator> </td> </tr> <tr> <td align="center" colspan="3"> <asp:ปุ่ม ID="btnsubmit" runat="server" onclick="btnsubmit_Click" style="text-align: center" Text= "ส่ง" /> </td> </tr> </table> <asp:ValidationSummary ID="ValidationSummary1" runat="server" DisplayMode ="BulletList" ShowSummary ="true" HeaderText="ข้อผิดพลาด:" /></form>
รหัสสำหรับปุ่มส่งมีดังนี้:
ป้องกันเป็นโมฆะ btnsubmit_Click (ผู้ส่งวัตถุ EventArgs e){ ถ้า (Page.IsValid) { lblmsg.Text = "ขอบคุณ"; } else { lblmsg.Text = "กรอกข้อมูลในฟิลด์ทั้งหมด";