การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล
ตรวจสอบโมเดลด้วยแอตทริบิวต์
การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
การตรวจสอบความถูกต้องด้วยแอตทริบิวต์ข้อมูลคืออะไร
แอตทริบิวต์ข้อมูล คือแอตทริบิวต์ที่วางไว้บนคุณสมบัติของโมเดลเพื่อประกาศกฎการตรวจสอบความถูกต้องโดยตรงในคลาส C# ของคุณ ASP.NET Core จะอ่านแอตทริบิวต์เหล่านี้ระหว่างการผูกข้อมูลเข้ากับโมเดล และตรวจสอบคำขอขาเข้าโดยอัตโนมัติ
แอตทริบิวต์เหล่านี้อยู่ในเนมสเปซ System.ComponentModel.DataAnnotations
using System.ComponentModel.DataAnnotations;
public class RegisterRequest
{
[Required]
public string Username { get; set; }
}แอตทริบิวต์ [Required]
[Required] รับประกันว่าคุณสมบัติจะไม่เป็นค่า null (และโดยค่าเริ่มต้นจะไม่เป็นสตริงว่าง) หากไคลเอนต์ไม่ส่งฟิลด์นี้มา การตรวจสอบโมเดลจะไม่ผ่านก่อนที่แอ็กชันของคุณจะเริ่มทำงาน
คุณสามารถปรับแต่งข้อความได้ด้วย ErrorMessage
public class RegisterRequest
{
[Required(ErrorMessage = "Username is required.")]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}การตรวจสอบตัวเลขด้วย [Range]
[Range] จำกัดค่าตัวเลขให้อยู่ระหว่างค่าต่ำสุดและค่าสูงสุดที่รวมขอบเขตทั้งสองด้าน ใช้งานได้กับ int, decimal และชนิดตัวเลขอื่น ๆ
ใช้กับอายุ ปริมาณ คะแนนประเมิน และตัวเลขอื่น ๆ ที่มีขอบเขตได้
public class ProductRequest
{
[Range(1, 1000, ErrorMessage = "Quantity must be between 1 and 1000.")]
public int Quantity { get; set; }
[Range(0.01, 9999.99)]
public decimal Price { get; set; }
}การตรวจสอบอีเมลด้วย [EmailAddress]
[EmailAddress] ตรวจสอบว่าสตริงมีรูปแบบคล้ายที่อยู่อีเมลที่ถูกต้องหรือไม่ ใช้ร่วมกับ [Required] เพื่อให้ฟิลด์มีทั้งค่าและรูปแบบที่ถูกต้อง
public class ContactRequest
{
[Required]
[EmailAddress(ErrorMessage = "Please enter a valid email.")]
public string Email { get; set; }
}ข้อจำกัดความยาวของสตริง
[StringLength] กำหนดความยาวสูงสุดและความยาวขั้นต่ำที่เลือกกำหนดได้สำหรับข้อความ ส่วน [MinLength] และ [MaxLength] เป็นทางเลือกที่เรียบง่ายกว่า
public class RegisterRequest
{
[Required]
[StringLength(20, MinimumLength = 3)]
public string Username { get; set; }
[MaxLength(500)]
public string Bio { get; set; }
}การจับคู่รูปแบบด้วย [RegularExpression]
[RegularExpression] ตรวจสอบสตริงกับรูปแบบนิพจน์ทั่วไป เหมาะอย่างยิ่งสำหรับรูปแบบต่าง ๆ เช่น หมายเลขโทรศัพท์ รหัสไปรษณีย์ หรือตัวระบุใน URL
public class ProfileRequest
{
[RegularExpression(@"^[a-z0-9-]+$",
ErrorMessage = "Slug may only contain lowercase letters, digits and dashes.")]
public string Slug { get; set; }
}การเปรียบเทียบสองฟิลด์ด้วย [Compare]
[Compare] รับประกันว่าคุณสมบัติหนึ่งมีค่าเดียวกับอีกคุณสมบัติหนึ่ง กรณีที่พบได้บ่อยคือการยืนยันรหัสผ่าน
public class RegisterRequest
{
[Required]
public string Password { get; set; }
[Compare(nameof(Password), ErrorMessage = "Passwords do not match.")]
public string ConfirmPassword { get; set; }
}วิธีที่ ModelState รายงานข้อผิดพลาด
เมื่อการตรวจสอบไม่ผ่าน ASP.NET Core จะเติมข้อผิดพลาดลงใน ModelState ในตัวควบคุมเอพีไอที่ตกแต่งด้วย [ApiController] คำขอที่ไม่ถูกต้องจะส่งการตอบกลับ 400 โดยอัตโนมัติ ดังนั้นจึงแทบไม่ต้องตรวจสอบด้วยตนเอง
[ApiController]
[Route("api/[controller]")]
public class AccountController : ControllerBase
{
[HttpPost("register")]
public IActionResult Register(RegisterRequest request)
{
// [ApiController] already returned 400 if invalid
return Ok("Registered " + request.Username);
}
}การตรวจสอบ ModelState ด้วยตนเอง
หากไม่มี [ApiController] (เช่น ในตัวควบคุม MVC) คุณต้องตรวจสอบ ModelState.IsValid ด้วยตนเอง และตัดสินใจว่าจะตอบกลับอย่างไร
public IActionResult Register(RegisterRequest request)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok();
}การรวมแอตทริบิวต์หลายรายการ
แอตทริบิวต์สามารถใช้ร่วมกันได้ คุณสมบัติหนึ่งรายการสามารถมีหลายแอตทริบิวต์ และทุกแอตทริบิวต์ต้องผ่านการตรวจสอบ ลำดับไม่มีผลต่อการประเมิน แต่ควรจัดเรียงให้ดูอ่านง่าย
public class SignupRequest
{
[Required]
[EmailAddress]
[StringLength(254)]
public string Email { get; set; }
[Required]
[Range(18, 120, ErrorMessage = "Must be 18 or older.")]
public int Age { get; set; }
}เมื่อแอตทริบิวต์ข้อมูลไม่เพียงพอ
แอตทริบิวต์ข้อมูลเหมาะอย่างยิ่งสำหรับกฎแบบง่ายที่ประกาศไว้โดยตรง แต่ตรรกะที่ตรวจสอบข้ามคุณสมบัติ การค้นหาข้อมูลจากฐานข้อมูล หรือกฎแบบมีเงื่อนไข ("จำเป็นเฉพาะเมื่อ X") จะจัดการได้ยากขึ้นอย่างรวดเร็ว นี่คือจุดที่ FluentValidation มีประโยชน์ ซึ่งเราจะเรียนรู้ต่อไป
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับแอตทริบิวต์ข้อมูล
สรุปทบทวน
คุณได้เรียนรู้ว่า แอตทริบิวต์ข้อมูล ใช้ประกาศกฎการตรวจสอบความถูกต้องในรูปแบบแอตทริบิวต์ ได้แก่ [Required] สำหรับตรวจสอบการมีค่า [Range] สำหรับกำหนดขอบเขตตัวเลข [EmailAddress] สำหรับรูปแบบอีเมล รวมถึง [StringLength], [RegularExpression] และ [Compare] เมื่อใช้ [ApiController] ข้อผิดพลาดจะส่งการตอบกลับ 400 โดยอัตโนมัติผ่าน ModelState สำหรับกฎที่ซับซ้อน ให้ใช้ FluentValidation ในบทถัดไป
คำถามที่พบบ่อย
บทเรียน “การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล”
ตรวจสอบโมเดลด้วยแอตทริบิวต์ คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล
- กฎ FluentValidation
- กฎแบบกำหนดเองและแบบมีเงื่อนไข
- การผสานการตรวจสอบเข้ากับ API