C# TryValidateModel

Model คืออะไร?

โครงสร้างการเขียนโค้ตแบบ MVC (Model-View-Controller) การส่งผ่านข้อมูลต่างๆ ส่วนใหญ่จะอยู่ในรูปแบบของ Model
Model คือแบบจำลองหรือ Class ที่ภายในบรรจุด้วย Property ต่างๆ สำหรับใช้ในการจัดเก็บข้อมูลเป็นกลุ่มก้อน หรือในภาษา OOP จะเรียกเป็น object data เช่น ข้อมูล Personal ภายในก็จะบรรจุข้อมูลชื่อ นามสกุล ส่วนสูง น้ำหนัก อายุ แล้วเมื่อต้องการรับ - ส่งข้อมูล เราก็จะรับ - ส่งไปทั้งก้อน Personal หรือส่งทั้ง object personal นั่นเอง
ภายใน Model เราสามารถระบุ Requirement ต่างๆ ของแต่ละ Property ได้

TryValidateModel(Object) Method

Namespace: Microsoft.AspNetCore.Mvc
Assembly: Microsoft.AspNetCore.Mvc.Core.dll

TryValidateModel เป็น method overloads มีให้เลือกใช้งานหลายรูปแบบ ดังตารางด้านล่าง (รายละเอียดเพิ่มเติม)
ในบทความนี้จะเป็นตัวอย่างการใช้งาน TryValidateModel(Object)

Overloads  
TryValidateModel(Object) Validates the specified model instance.
TryValidateModel(Object, String) Validates the specified model instance.

TryValidateModel(Object)

ใช้ในการตรวจสอบความถูกต้องของข้อมูลใน Property ที่อยู่ใน Object นั้น
ถ้า Object valid จะ return true ถ้าไม่จะ return false

ตัวอย่าง Personal Model

using System;
using System.ComponentModel.DataAnnotations;

namespace TryValidateModelSample
{
    public class PersonalModel
    {
        [Required(ErrorMessage ="Firstname is required.")]
        [StringLength(20)]
        public string Firstname { get; set; }

        [Required(ErrorMessage = "Lastname is required.")]
        [StringLength(20)]
        public string Lastname { get; set; }

        public double Weight { get; set; }

        public double Height { get; set; }

        [Range(1,100)]
        public int Age { get; set; }
    }
}

สร้าง Object ของ Personal Model

//สร้าง Object ของ Personal Model
var objPersonal = new PersonalModel
{
    Firstname = "Athiporn",
    Lastname = "Phumnicom",
    Weight = 82.00,
    Height = 178.00,
    Age = 31
};

Validate Personal Model

ตรวจสอบความถูกต้องของ Object Personal โดยใช้ TryValidateModel(Object) Method

จากรูป Object "objPersonal" มีความถูกต้อง TryValidateModel จะ return ค่าเป็น true

ทดลองเปลี่ยนค่า Age จาก 31 เป็น 150 ซึ่งเกินจากที่เราได้กำหนดไว้ใน Model ด้วยคำสั่ง [Range(1,100)] แล้วลอง Validate อีกครั้งด้วย TryValidateMedel จะเห็นว่า return ค่าเป็น false ดังภาพด้านล่าง


Reference:

AKA

BlackDragon