2017-10-08 58 views
-1

對於DateTime類型,如果我有一個DateTime屬性內類然後我嘗試模型綁定與HTTP後json正文的類,DateTime屬性不會綁定, 怎麼會這樣?但如果我使用參數綁定,它工作正常。所以,下面的代碼工作ASP.NET Web API:日期時間綁定不工作在json正文

[Route("v1/taxiqi")] 
[HttpPost] 
public object UpdateTaxiQI(string status, DateTime updateTime) 
{ 
    ... 
} 

但不適合下面的代碼

[Route("v1/taxiqi")] 
[HttpPost] 
public object UpdateTaxiQI(TaxiQI taxiQI) 
{ 
    ... 
} 
public class TaxiQI 
{ 
    public string Status; 
    public DateTime UpdateTime; 
} 

我使用的是最新的ASP.NET Web API。字段正在處理我的其他API,此外,狀態字段已成功綁定。我已經嘗試過屬性,結果相同。

對不起,我發現根本原因,它是我們的代碼庫造成使用自定義DateTimeConverterJSON.NET和預計一個JavaScript風格蜱,而不是一個日期字符串

+0

哪裏是你的getter和settter? – Svek

+0

請更新您的帖子以顯示您的示例JSON。 – mjwills

+0

您使用的是什麼版本的ASP.NET WebAPI?早期版本使用'DataContractJsonSerializer',參見[Json串行器在ASP.NET和其他](https://techblog.dorogin.com/json-serializers-in-as- net-and-other-e12d3d62933f)。 – dbc

回答

2

TaxiQI類是不正確。
JSON適用於公共屬性而不是公共字段。類改成這樣:

public class TaxiQI 
{ 
    public string Status { get; set; } 
    public DateTime UpdateTime { get; set; } 
} 
+0

我正在使用最新的ASP.NET Web API。字段正在工作,因爲它正在處理我的其他模型,此外,狀態字段已成功綁定 – imgen

1

除了Svek的答案,它可能是明智的使用Nullable<DateTime>DateTime?代替。無論何時反序列化數據,空值都是一種固有的可能性。

+0

我試過DateTime?同樣的結果 – imgen

0

我發現根本原因,是我不好,這是由我們的代碼庫使用JSON.NET定製DateTimeConverter引起的,它需要一個JavaScript的風格蜱,而不是一個日期字符串

相關問題