Angular js JSON-Daten mit MVC-modellbindung für DateTime?

Ich bin mit Angular JS, um get-und post-Daten auf meinem MVC 4 Controllers als JSON. Alle meine Eigenschaften ordnungsgemäß konvertiert, außer die DateTime/DateTime? Typen. Ich würde gerne eine "set it and forget it" - Ansatz, um die Behandlung von Datumsangaben, so dass neue Klassen und oder Eigenschaften, die Hinzugefügt werden, werden Sie nicht haben, zu erinnern, zu tun, einige spezielle Konvertierung zu handhaben, ein Datum richtig. Ich habe gesehen, die folgenden Ansätze und mögliche Nachteile. Mit welchem Ansatz sind Leute da draußen mit der gleichen Plattform? Gibt es etwas in MVC4, dass ist der Umgang mit diesem richtig, dass ich kann nicht konfiguriert haben? Alle Vorschläge werden sehr geschätzt werden.

  1. Benutzerdefinierte binder Modell. Als details in Phil Haack blog. Möglich
    performance-Probleme.
  2. Führen Sie einige änderungen, auf die JS-Seite. Wie detailliert in Robert Koritnik s blog. Dies scheint nicht zu funktionieren für Angular js, gibt es vielleicht eine Einstellung in der $http.post, die dies ermöglichen, zu arbeiten, sondern mein Objekt hat, werden alle null-Werte mit diesem Ansatz.
  3. Haben einige zusätzliche Immobilien wie FormattedDateTime konvertiert werden kann auf die POST-Aktion. Dies ist nicht ein "set it and forget it-Konzept", obwohl es nicht erlaubt, für die korrekte Anzeige von Daten in der client-Seite, die sich noch in der " /Datum(695573315098)/format

Bitte sehen Sie den folgenden code Beispiel.
C# - Klasse:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }
    public DateTime? ApprovedForSomething { get; set; }
}

Angular JS-Controller:

    function PersonController($scope, $http) {
        $scope.getPerson = function () {
            $http.get('../../Home/GetPerson/1').success(function (data) {
                $scope.Person = data;
            });
        }
        $scope.updateApprovedForSomething = function () {
            $http.post('../../Home/UpdatePerson', { person: $scope.Person }).success(function (data) {
                console.log(data);
            });
        }
    }

Fiddlers POST:

HTTP/1.1 200 OK Cache-Control: private Content-Type: application/json;
charset=utf-8 Server: Microsoft-IIS/8.0 X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319 X-Quelldateien:
=?UTF-8?B?YzpcdXNlcnNcbmlja1xkb2N1bWVudHNcdmlzdwfsihn0dwrpbyaymdeyxfbyb2ply3rzxfzhbglkyxrpb25uzxn0xehvbwvcr2v0ugvyc29uxde=?=
X-Powered-By: ASP.NET Datum: Wed, 16 Jan 2013 14:48:34 GMT
Content-Length: 124

{"FirstName":"Bob","LastName":"Smith","BirthDate":"/Date(695573315098)/","ApprovedForSomething":"/Date(1358261315098)/"}

Wie Sie sehen können, mit den Fiddler-Daten das Datum kommt als JSON-Datum, aber wenn man die POST-Methode der DateTime-Eigenschaft ist nicht richtig, und die DateTime? - Eigenschaft ist null.

Angular js JSON-Daten mit MVC-modellbindung für DateTime?

  • Ich gehe mit Phil Haack Lösung. JSON-Daten sollte in einem JavaScript-lesbaren format, wenn Sie den server verlassen. Es ist die JavaScript Object Notation, afterall.
  • +1 auf Haack. Mit JSON.NET fix wird das datetime Problem so gut wie dumm, Serialisierungs-format .NETTO-Wörterbücher.
InformationsquelleAutor likestoski | 2013-01-16
Schreibe einen Kommentar