Состояние модели Всегда верно, даже если обязательное поле не отправлено - PullRequest
0 голосов
/ 27 мая 2019

Я просто вызываю API и передаю объект в качестве параметра, и все работает отлично. Но затем я хотел проверить модель, прежде чем идти дальше, поэтому я просто написал [Обязательно] над полями, которые я всегда хотел заполнить. 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; }

    }

и проверить состояние модели в контроллере следующим образом

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 выделяет 0 для значения int, когда оно равно null, но как я могу его потом проверить?

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Атрибут Обязательный хорошо работает для обнуляемых ссылочных объектов.Для примитивов при создании экземпляра значение по умолчанию (в данном случае 0 для int) назначается для FacilityId, и, следовательно, Required не будет работать.Если вы сделаете FacilityId как nullable int, то атрибут Required будет работать нормально.

[Required]
public int? FacilityId { get; set; }
0 голосов
/ 27 мая 2019

Просто замените эту строку:

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

С этим:

[Required]
public int? FacilityId { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...