2

我向API控制器提交日期值爲「02/11/2015」(DD/MM/YYYY)的JSON對象。出於某種原因,它會在綁定(2月11日)時轉換爲美國格式。我在同一個解決方案中使用了標準的MVC控制器,它將綁定的日期值以相同的格式正確提交(英國)。什麼會造成這種差異:ASP.NET Web API日期時間綁定

下面是標準的MVC提交標題:

Accept:*/* 
Accept-Encoding:gzip, deflate 
Accept-Language:en-US,en;q=0.8,pl;q=0.6 
Cache-Control:no-cache 
Connection:keep-alive 
X-Requested-With:XMLHttpRequest 

而且表單數據

StartDate : 01/11/2015 

這裏有API調用頭

Accept:application/json, text/javascript, */*; q=0.01 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8,pl;q=0.6 
Cache-Control:no-cache 
Connection:keep-alive 
Content-Type:application/json; charset=UTF-8 
X-Requested-With:XMLHttpRequest 

和JSON對象我通過

{ DateStart: "01/11/2015" } 

回答

0

我猜webapi json serializer中的默認dateFormat與MVC的不一樣。

嘗試在配置文件(App_start/WebApiConfig)中的WebApi中指定。

例子:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
json.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat; 

或者 GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateFormatString = 「YYYY-MM-DD」

與日期格式,DateZone需要。

更多的相關信息在這裏:

Post dates web api custom format

+0

遺憾的是沒有您的解決方案的工作 – Bartosz

+1

'GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateFormatString = 「YYYY-MM-DD」'中的登記方法你webapiconfig文件不更改格式? –

+0

使它最終使用自定義轉換爲DateTime類型:config.Formatters.JsonFormatter.SerializerSettings.Converters.Insert(0,new MyDateTimeConverter());感謝您的幫助 – Bartosz