Я на самом деле еще не пробовал этот параметр, но я думаю, что ключ к этому в названии: SuppressImplicitRequiredAttributeFor NonNullableReferenceTypes .
Похоже, это не относится к типам значений. Это относится к ссылочным типам, не допускающим значения NULL.
Как вы сказали, свойство с типом int
всегда будет иметь значение по умолчанию, валидатор модели не будет знать, отсутствовало ли это значение или было установлено к этому.
Однако, если вы включите C# 8 обнуляемых ссылочных типов, у вас могут быть такие свойства, как:
public string A { get; set; }
public string? B { get; set; }
Теперь при установке этого параметра свойство A
получает Обязательное атрибут. Это все еще ссылочный тип и может быть нулевым. Таким образом, проверка имеет смысл.