Почему на пустое поле вместо null отправляет 0 метод post?

есть модель . Когда я делаю добавление printingEdition в базу данных, я хочу что б все поля были обязательными. При добавлении я специально не указываю поле price для проверки, при добавлении оно ж должно вернуть null и добавление прекратится, а у меня возвращает 0 и добавление проходит успешно. Подскажите почему

 public class PrintingEditionModel
    {
        public long Id { get; set; }

        [Required(ErrorMessage = Constants.Errors.TITLE_IS_REQUIRED)]
        public string Title { get; set; }

        [Required(ErrorMessage = Constants.Errors.DESCRIPTION_IS_REQUIRED)]
        public string Description { get; set; }

        [Required(ErrorMessage = Constants.Errors.PRICE_IS_REQUIRED)]
        public decimal Price { get; set; }

        [Required(ErrorMessage = Constants.Errors.CURRENCY_IS_REQUIRED)]
        public CurrencyType Currency { get; set; }

        [Required(ErrorMessage = Constants.Errors.TYPE_IS_REQUIRED)]
        public PrintingType Type { get; set; }

        [Required(ErrorMessage = Constants.Errors.AUTHOR_IS_REQUIRED)]
        public List<long> AuthorsId { get; set; }
       
    }

Ответы (2 шт):

Автор решения: Aziz Umarov

Поймите разницу между

public decimal Price { get; set; }

и

public decimal? Price { get; set; }

один не может иметь null а второй может. И первый по умолмолчанию 0

→ Ссылка
Автор решения: CrazyElf

Из документации: "Значение по умолчанию Decimal равно 0." Это же ValueType, откуда там null возьмётся, если вы не сделаете сами это поле Nullable?

→ Ссылка