2016-09-12 4 views
1

Ich habe eine POCO-DTO-Klasse, die ein Datumsfeld enthält. Und ich habe ein Formular auf einer Webseite in Portugiesisch (dd/mm/yyyy). Wenn die Daten von de form bereitgestellt werden, empfängt der API-Controller das Datumsfeld im Format mm/dd/yyyy. Ich habe bereits einige Kultureinstellungen in den web.config und global.asax, aber es hatte keine Wirkung.WebAPI-Controller-Datumsformat frombody

Untersuchen der veröffentlichten Werte mit Chrome-Entwickler-Tools kann ich sehen, dass das Datum richtig ist: 01/07/1983. Aber im api-Controller dreht es sich am 07.01.1983.

Wie kann der Controller richtig konfiguriert werden, damit er das richtige Datumsformat erhalten kann?

+0

Sie Chome Entwickler-Tools einen Blick nehmen verwenden sollten, und sehen, was wird tatsächlich an Ihre Controller-Methode gesendet. Es könnte sein, der Debugger zeigt es Ihnen so. Warum formatieren Sie das Datum in der Controller-Methode nicht so, wie Sie es möchten? –

+0

Was ist das Problem in mm/TT/JJJJ? Sie könnten es immer auf das richtige Format am Ende rechts einstellen? –

+1

Sie sollten das Senden/Empfangen aller Datums- und Datumszeit-Instanzen im Format [ISO8601] (https://en.wikipedia.org/wiki/ISO_8601) verarbeiten. Der Client sollte das Datum anzeigen, wie es ihm passt, dies ist die Präsentationslogik und fällt außerhalb des tatsächlichen Sendens/Empfangens der Datumsinstanz. – Igor

Antwort

2

Danke für die Hilfe!

Ich löste dies in Web.config setzen:

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

Und in Application_Start in Global.asax.cs:

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

Arbeitete anmutig ... in meinem Fall habe ich keine AnfrageEncoding noch ResponseEncoding Cuz der Acents gesetzt ... – ADNnetPonzo

Verwandte Themen