Wie wird ASP.Net MVC mitgeteilt, dass alle von JSon deserialisierten eingehenden Daten UTC sein müssen?

8

Ich sende Daten von meiner Web-App im UTC-Format, aber wenn ich sie auf der Serverseite empfange, macht der JSon-Serializer (der wahrscheinlich durch das Einrichten Ihres Modells verwendet wird) dies in einem lokalen Datum & amp; Zeit mit DateTimeKind.Local relativ zur Zeitzone des Servers.

Wenn ich eine DateTime.ToUniversalTime () mache, bekomme ich das richtige UTC-Datum, das ist also kein Problem. Die Konvertierung funktioniert korrekt und die Daten werden so gesendet, wie sie sollten ... aber .... Ich möchte nicht an jedem Datum in meinem Modell "ToUniversalTime ()" aufrufen, bevor ich es in einer Datenbank ablege ... Dies ist anfällig für Fehler und leicht zu vergessen, wenn Sie eine große App haben.

Hier ist also die Frage: Gibt es eine Möglichkeit, MVC mitzuteilen, dass eingehende Daten immer im UTC-Format angegeben werden sollten?

    
Jeroen Landheer 02.03.2012, 20:49
quelle

1 Antwort

2

Nachdem ich ein bisschen mehr gegraben habe, habe ich einen Weg gefunden, das funktionieren zu lassen.

Das Problem war nicht so sehr der Serializer, sondern nur das Problem, dass die Daten des Modells nicht in UTC, sondern in Ortszeit ausgedrückt werden. ASP.Net ermöglicht es Ihnen, benutzerdefinierte Modellbinder zu erstellen, und ich denke, das ist der Schlüssel, um Daten in UTC zu ändern, sobald sie deserialisiert sind.

Ich habe den folgenden Code verwendet, um dies zu erreichen. Es könnte ein paar Bugs geben, die Sie beseitigen sollten, aber Sie werden auf die Idee kommen:

%Vor%     
Jeroen Landheer 02.03.2012, 22:17
quelle

Tags und Links