Как отправить datetime из mvc в web api в качестве параметра? - PullRequest
0 голосов
/ 03 мая 2020

Теперь, когда я отправляю его с mvc контроллера на веб-API, например, «01 -05-2020 00:00:00», веб-API получает его как «05 -01-2020 00:00:00», и если я посылаю «21 -04-2020 00:00:00», это дает ошибку 400: BadRequest.

Я получаю параметры в веб-API как

IHttpActionResult Applications(DateTime fromDate,DateTime toDate)

Mvc Контроллер

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://localhost:44329/api/Values");
var postTask = client.GetAsync("/api/Values/Applications?fromDate=" + FromDate + "&toDate=" + ToDate );

1 Ответ

1 голос
/ 03 мая 2020

При отправке дат в API рекомендуется использовать формат, который не зависит от культуры. Широко используется формат ISO 8601.

Вы можете преобразовать свои даты в ISO 8601, вызвав ToString ("O"):

var postTask = client.GetAsync("/api/Values/Applications?fromDate=" + FromDate. ToString("O") + "&toDate=" + ToDate.ToString("O"));

Для получения дополнительной информации о формате см. Эту ссылку: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings#the -round-trip-oo-format-спецификатор

Обратите также внимание, что часовой пояс - это еще один параметр, который следует учитывать, поэтому передача и ожидание даты в формате UT C хорошая практика, чтобы избежать проблем, связанных с часовым поясом.

...