0Pricing
C# Academy · บทเรียน

การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล

ตรวจสอบโมเดลด้วยแอตทริบิวต์

การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตรวจสอบความถูกต้องด้วยคำอธิบายข้อมูล
  2. กฎ FluentValidation
  3. กฎแบบกำหนดเองและแบบมีเงื่อนไข
  4. การผสานการตรวจสอบเข้ากับ API
← กลับไปที่ C# Academy