Status Model Selalu benar meskipun kolom yang diperlukan tidak dikirim

Saya hanya memanggil API dan meneruskan objek sebagai parameter dan semuanya berfungsi dengan baik. Tapi kemudian saya ingin memvalidasi model sebelum melangkah lebih jauh jadi saya cukup menulis [Wajib] di atas kolom yang selalu ingin saya isi. MODEL

 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; }

    }

dan validasi status model di pengontrol seperti ini

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

            }
            //Further Code
        }

Dengan ini saya berharap status model menjadi salah ketika saya tidak mengirim facilityId ketika saya memanggil api JSON

{

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

tapi itu masih benar. Saya tahu .Net core mengalokasikan 0 ke nilai int ketika null tetapi bagaimana saya bisa memvalidasinya? Apa solusi untuk ini?


person Umer    schedule 27.05.2019    source sumber


Jawaban (2)


Cukup ganti baris ini:

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

Dengan ini:

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

Atribut Required berfungsi dengan baik untuk objek referensi yang dapat dibatalkan. Untuk primitif, ketika sebuah instance dibuat, nilai default (dalam hal ini 0 untuk int) ditetapkan untuk FacilityId, dan karenanya Required tidak akan berfungsi. Jika Anda menjadikan FacilityId sebagai int yang dapat dibatalkan maka atribut yang Diperlukan akan berfungsi dengan baik.

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