2016-09-21 2 views
0

Я пытаюсь сделать поле обязательным перед отправкой на сервер. Для этого я использовал аннотацию данных [Required] для проверки модели. Он работает как ожидалось для строки , но не для double.Обязательное свойство не найдено в json

По какой-то причине он не работает для double типа собственности. Вот код, у меня есть для модели:

public class ProductMetadata 
{ 
    [Required] 
    public string Barcode { get; set; } 

    [StringLength(50)] 
    [Required(AllowEmptyStrings = false, ErrorMessage="Please insert the product name!")] 
    public string Name { get; set; } 

    [Range(0, 5000)] 
    public double ShippingCostPerUnit { get; set; } 

    [Range(0, 10000)] 
    public int QuantityForFreeShipping { get; set; } 

    public Nullable<int> CategoryId { get; set; } 

    public bool IsDeleted { get; set; } 

    [Range(0, 1000000)] 
    [Required(ErrorMessage="Please provide a unit price for the product!")] 
    public double UnitPrice { get; set; } 
} 

Тело ответа является ответом JSON и ни один из требуемых полей законченных имеет следующее содержание:

{ 
"Message":"The request is invalid.", 
"ModelState": 
      {"product":["Required property 'UnitPrice' not found in JSON. Path '', line 1, position 33."], 
      "product.Barcode":["The Barcode field is required."], 
      "product.Name":["Please insert the product name!"] 
      } 
} 

Я не Не понимаю, почему работает нормально для Наименование и Штрих-код, а не для UnitPrice.

Edit 1:

Если удалить [обязательно] атрибут, и я помещал вход для UnitPrice -1 я получаю соответствующее сообщение подтверждения, так почему не работает для Обязательный атрибут?

Edit 2: Запрос полезной нагрузки (также обновил ProductMetadata класс):

{IsDelete: false, CategoryId: 1} 
CategoryId: 1 
IsDelete: false 

Любая помощь приветствуется! Благодаря!

+0

Можете ли вы поделиться своей полезной нагрузкой - JSON? – Paritosh

+0

@Paritosh Я отредактировал вопрос – sixfeet

ответ

0

Самого быстрое решение сделать Unit Price обнуляемого

[Range(0, 1000000)] 
[Required(ErrorMessage="Please provide a unit price for the product!")] 
public double? UnitPrice { get; set; } 

Проблема заключается в поле Цена единицы отсутствует в формате JSON и JSON Formatter пытается десериализация дважды и получает исключение, прежде чем Обязательно выполняются.