2016-09-21 50 views
0

我試圖在提交給服務器之前強制一個字段。爲此,我使用[必需的]數據註釋進行模型驗證。它如預期的那樣工作,字符串數據類型但不是在json中找不到所需的屬性

由於某種原因,它不適用於double type屬性。 下面是我對模式代碼:

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!"] 
      } 
} 

我不不明白爲什麼工作正常名稱條碼而不是單價

編輯1

如果我刪除[必需]屬性,我把其輸入爲單價 -1我收到相應的驗證消息,那麼爲什麼不工作的要求屬性?

編輯2:請求有效負載(也更新了ProductMetadata類):

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

任何幫助表示讚賞!謝謝!

+0

你能分享你的請求有效載荷 - JSON嗎? – Paritosh

+0

@Paritosh我編輯了這個問題 – sixfeet

回答

0

最快的決定是使單價爲空的

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

的問題是該領域單價中缺少JSON和JSON格式化試圖反序列化雙,並要求執行之前接收例外。