Validator Control (ASP.NET)
posted on 22 May 2005 19:41 by tidno1 in csharp-and-dotnetปกติแล้วเวลามีฟอร์มไว้รับข้อมูล เราต้องคอยเขียน script ไว้ตรวจสอบข้อมูลใน textbox เช่นตรวจว่าฟิลด์นั้น user กรอกข้อมูลรึยัง หรือว่าฟิลด์นั้นไว้ให้กรอก email แต่ user ก็กลับกรอกอะไรมาก็ไม่รู้ เราก็ต้องคอยมาเช็กเอง

แต่ว่าใน ASP.NET นั้น เรามีคอนโทรลที่เรียกว่า Validator มาให้ใช้สำหรับตรวจสอบดังนี้

- RequiredFieldValidator input นั้นจะต้องมีการป้อนข้อมูล
- CompareValidator ไว้เปรียบเทียบ input นั้นกับค่าคงที่ หรือกับ property ของ control อื่น (<, > ,==) โดยที่เห็นบ่อย ๆ คือไว้เปรียบเทียบช่องกรอก password ทั้งสองช่องให้เหมือนกัน
- RangeValidator ตรวจสอบว่า input นั้นอยู่ใน range ที่กำหนดไว้หรือไม่ (เทียบกับ ตัวเลข, ตัวอักษร, หรือวันที่ก็ได้)
- RegularExpressionValidator ไว้เปรียบเทียบโดยกำหนดรูปแบบไว้เป็น regular expression
- CustomValidator กำหนด logic ไว้ตรวจสอบได้เอง
- ValidationSummaryไว้แสดง error ที่เกิดขึ้น
โดยครั้งนี้จะแสดงตัวอย่าง แค่สองอันซึ่งได้ใช้บ่อย ๆ เท่านั้นคือ RequiredFieldValidator กับ RegularExpressionValidator
Properties ที่สำคัญของทั้งสองอันนี้ก็จะมี

- Display
- none ไม่แสดงบนเว็บเพจ
- static จองที่แสดงบนเพจนั้น
- dynamic เมื่อมี error เกิดขึ้นถึงแสดง และเมื่อ error ถูกแก้ไขแล้ว error message จะหายไป(โดยไม่จำเป็นต้องกด submit form นั้น)
- ErrorMessage html text ที่ไว้ฟ้อง error แก่ผู้ใช้ Text เป็นข้อความที่ไว้ใช้แสดงในกรณีปกติ
- ControlToValidate ระบุ id ของ control ที่เราต้องการตรวจสอบ
- EnableClientScript หากเราต้องการให้มีการตรวจสอบ control นั้นในฝั่ง server เท่านั้น เราก็ต้อง set ให้เป็น false
สำหรับ RegularExpressionValidator จะมี property อีกตัวคือ ValidationExpression ไว้กำหนด regular expression

โดยเราสามารถกำหนดได้เอง

หรือว่าใช้ regular expression สำเร็จรูปก็ได้

ปกติแล้ว Validator แต่ละตัวนั้นจะไม่ทำงานเอง จนกว่าเราจะสั่ง Validate() และเมื่อ method Validate() ทำงานมันจะ set ค่า property IsValid ให้เราไว้ตรวจสอบได้

ex :
private void Page_Load(object sender, System.EventArgs e) {
if(!Page.IsPostBack) {
// ...
reqFirstname.Validate();
reqSurname.Validate();
reqPhone.Validate();
reqEmail.Validate();
regexpEmail.Validate();
reqDetail.Validate();
}
}
private void btnSubmit_Click(object sender, System.Web.UI.ImageClickEventArgs e) {
if(reqFirstname.IsValid && reqSurname.IsValid
&& reqPhone.IsValid && reqEmail.IsValid
&& regexpEmail.IsValid && reqDetail.IsValid)
{
//...
}
}
วิธีใช้ก็ไม่ยาก แค่ลากคอนโทรลมาวางตรงตำแหน่งที่จะเอาไว้แจ้ง error message

php พอมียังงี้บ้างหรือป่าวครับ
#1 By Compman on 2005-05-22 22:47