สถานะโมเดลเป็นจริงเสมอแม้ว่าจะไม่ได้ส่งฟิลด์ที่จำเป็นก็ตาม

ฉันเพียงแค่เรียก API และส่งวัตถุเป็นพารามิเตอร์ และทุกอย่างทำงานได้ดี แต่แล้วฉันต้องการตรวจสอบแบบจำลองก่อนที่จะดำเนินการต่อไป ดังนั้นฉันจึงเขียน [Required] ไว้เหนือฟิลด์ที่ฉันต้องการเติมเสมอ แบบอย่าง

 public class Consent
    {
        public Consent()
        {

        }
        public int Id { get; set; }
        [Required]
        public int FacilityId { get; set; }
        public string Heading { get; set; }
        public string Description { get; set; }

    }

และตรวจสอบสถานะของโมเดลในคอนโทรลเลอร์เช่นนี้

public ActionResult<int> AddConsent(Consent consent)
        {
            if(!ModelState.IsValid){
                throw new CustomException("000-0000-000", "Validation failed");

            }
            //Further Code
        }

จากนี้ฉันคาดว่าสถานะของโมเดลจะเป็นเท็จเมื่อฉันไม่ได้ส่งรหัสสิ่งอำนวยความสะดวกเมื่อฉันเรียก api JSON

{

    "heading": "HeadingFromPostman5",
    "description": "DiscriptiomFromPostman5"
}

แต่มันก็ยังคงเป็นจริง ฉันรู้ว่า .Net core กำลังจัดสรร 0 ให้เป็นค่า int เมื่อเป็นโมฆะ แต่ฉันจะตรวจสอบได้อย่างไร แล้วจะแก้ไขอย่างไร


person Umer    schedule 27.05.2019    source แหล่งที่มา


คำตอบ (2)


เพียงแทนที่บรรทัดนี้:

[Required]
public int FacilityId { get; set; }

ด้วยสิ่งนี้:

[Required]
public int? FacilityId { get; set; }
person Elyas Esna    schedule 27.05.2019

แอตทริบิวต์ที่จำเป็นทำงานได้ดีสำหรับวัตถุอ้างอิงที่เป็นโมฆะ สำหรับพื้นฐาน เมื่อสร้างอินสแตนซ์ ค่าเริ่มต้น (ในกรณีนี้คือ 0 สำหรับ int) ถูกกำหนดให้กับ FacilityId และด้วยเหตุนี้ จำเป็น จะไม่ทำงาน หากคุณทำให้ FacilityId เป็น int ที่เป็นโมฆะ แอตทริบิวต์ Required จะทำงานได้ดี

[Required]
public int? FacilityId { get; set; }
person Prakash G. R.    schedule 27.05.2019