Проверка модели ядра ASP.NET не работает должным образом - PullRequest
0 голосов
/ 14 мая 2019

Согласно документации Microsoft, если свойство модели не имеет значения NULL, оно считается обязательным по умолчанию, поэтому нет необходимости явно добавлять атрибут [Required].

По умолчаниюСистема проверки обрабатывает ненулевые параметры или свойства, как если бы они имели атрибут [Обязательный].Типы значений, такие как decimal и int, не обнуляются.https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-2.2#required-attribute

Но это не совсем так.Допустим, у меня есть следующая модель:

public class Model
{
    [Required]
    public string Name { get; set; }
    public int Age { get; set; }
}

Если запрос не содержит Age в своем теле, 0 привязан к свойству Age и проверка модели не завершится неудачей.Даже с [Required] проверка модели по-прежнему не проходит, и 0 присваивается Age.Так как же сделать свойства с ненулевыми типами действительно «обязательными»?

1 Ответ

2 голосов
/ 14 мая 2019

Три варианта imho:

  • Подтвердите, что Age не является значением default
  • Использовать атрибут Range
  • Сделай это обязательным и nullable
[Required]
public int? Age { get; set; }

От ваших обстоятельств очень зависит, является ли Nullable-Required хорошим решением или просто грязным обходным путем.

...