2016-09-12 3 views
1

У меня есть класс POCO DTO, на котором есть поле даты. И у меня есть форма на веб-странице на португальском языке (dd/mm/yyyy). Когда данные отправляются из формы, контроллер API получает поле даты в формате mm/dd/yyyy. Я уже установил некоторые настройки культуры в web.config и global.asax, но это не повлияло.Формат даты контроллера WebAPI frombody

Осмотр опубликованных значений с помощью инструментов для создания хрома. Я вижу, что дата правильная: 01/07/1983. Но в контроллере api это происходит 01.07.1983.

Каков правильный способ настройки контроллера, чтобы он мог получить правильный формат даты?

+0

вы должны использовать темэ инструменты для разработчиков, чтобы посмотреть и увидеть, что фактически отправляется на ваш метод контроллера. Это может быть так, отладчик показывает вам это. Почему вы просто не форматируете дату внутри метода контроллера так, как хотите? –

+0

В чем проблема с его использованием в мм/дд/гггг? вы всегда можете установить его в правильном формате в конце справа? –

+1

Вы должны обрабатывать отправку/получение всех экземпляров даты и даты в формате [ISO8601] (https://en.wikipedia.org/wiki/ISO_8601). Клиент должен отображать дату по своему усмотрению, это логика представления и выходит за пределы фактической отправки/получения экземпляра даты. – Igor

ответ

2

Спасибо за помощь!

Я решил эту проблему, поставив в Web.config:

<globalization enableClientBasedCulture="true" requestEncoding="utf-8" responseEncoding="utf-8" culture="pt-BR" uiCulture="pt-BR"/> 

И в Application_Start в Global.asax.cs:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
json.SerializerSettings.Culture = System.Globalization.CultureInfo.CurrentCulture; 
+0

Работал изящно ... в моем случае я не установил requestEncoding или responseEncoding cuz of acents ... – ADNnetPonzo

Смежные вопросы