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

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

เจ๋งดีแหะ แต่เขียน asp ไม่เป็น
php พอมียังงี้บ้างหรือป่าวครับ

#1 By Compman on 2005-05-22 22:47

น่านจิ php น่าจะพอมีมั้ง เหอๆ มันมี PHP.NET ป่าวหว่า

#2 By ZOMBIE on 2005-05-23 12:07

เท่าที่ดู น่าจะมีแต่ ASP.NET ที่มี control ดี ๆ พวกนี้ติดมาด้วยนะ php นี่คงไม่ classic ASP นี่อาจจะพอหาโหลดได้

#3 By T!D on 2005-05-23 19:07

อ่า...หวัดดีคับพี่ ผมอยู่กลุ่มโควต้าปีหนึ่งคับ
คณะวิศวกรรมศาสตร์ ภาคการบินและอวกาศยาน สาขาการจัดดการการบิน ครับผม (เพิ่งเปิดปีแรกนี่ล่ะคับ) ยังไงก้อฝากตัวด้วยนาคับ

#4 By ปาม มี่ ♫ on 2005-05-23 20:59

อืมมม ๆ

นับว่าเป็นบทความที่มีประโยชน์มาก ๆ เลยจ้ะ


แต่....

ไม่รู้เรื่อง

#5 By A N E W on 2005-05-31 10:29

โห ชิวิตง่ายขึ้นเยอะเลย

เฮ่อ ต้องศึกษาจริงๆจังซะแล้ว

#6 By nonsense on 2005-06-02 01:12

#7 By (124.121.191.29) on 2006-07-16 16:42

#8 By (58.10.36.190) on 2006-10-02 10:43

#9 By (58.10.143.35 /192.168.30.2) on 2007-04-25 09:21

#10 By (202.12.74.76) on 2007-11-30 13:24

เป็นสิ่งที่กำลังหาอยู่พอดี ขอบคุณนะ

#11 By snigger (202.28.27.3) on 2008-02-02 19:01