Behandlung von Daten mit Asp.Net MVC und KnockoutJS

Ich habe vor kurzem angefangen, mit KnockoutJs und merkte schnell über die Standard - Json(myModelWithADate) führte in der Standard-json-Kodierung von \/Date(-62135578800000)\/ Mit ein wenig Forschung, die ich nur vier mögliche Wege zur Bewältigung der Anzeige meiner Daten in der dom-Elemente.

1) Erstellen Sie eine Bindung, die behandelt die Konvertierung von Json-Datum auf das format, das Sie wünschen

ko.bindingHandlers.date = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var jsonDate = valueAccessor();
        var value = new Date(parseInt(jsonDate.substr(6)));
        var ret = value.getMonth() + 1 + "/" + value.getDate() + "/" + value.getFullYear();
        element.innerHTML = ret;
    },
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) {

    }
};

Nutzung

<td data-bind="date: DueDate">
</td>

2) Return "strings" aus dem Controller

return Json(new {MyDate = DateTime.Now.ToShortDateString()});

3) JSON.NET zur Angabe eines Datums-Zeit-format gesehen zu james.newtonking.com

Beispiel

string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter());
//{"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}

4) verwenden Sie JSON.analysieren, verarbeiten Ihre Daten wie in dieser stackoverflow Antwort.

JSON.parse(jsonText, function(key, value) {
    //Check for the /Date(x)/pattern
    var match = /\/Date\((\d+)\)\//.exec(value);
    if (match) {
        var date = new Date(+match[1]); //Convert the ticks to a Date object
        return humanReadable(date); //Format the date how you want it
    }

    //Not a date, so return the original value
    return value;
});

Scheinen Sie alle zu funktionieren, aber ich bin immer noch am kämpfen mit denen man sich fühlt "rechts". Jetzt mein Darm wird mit einer Mischung mit der Bindung und zurückgeben von Zeichenfolgen. Wie ich sehen konnte, selbst die Verlängerung der verbindlich zu behandeln Eingang mit jQuery UI datepicker-Steuerelemente.

Ist es eine akzeptierte Praxis bei der Handhabung der Anzeige von Daten oder anderen Datentypen wie Währung? Gibt es eine andere option, die ich bin fehlt, die dieses problem löst?

Kommentar zu dem Problem - Öffnen
Ich benutze Zeichenfolgen in meine Projekte. Der binder Modell Parsen eines Datums aus einem string, so kann ich die round-trip-Werte einfach so. Kommentarautor: Ryan
Ich habe meine json-Netto-Ergebnis auf das gleiche problem, es wandelt das Datum in iso-format, so dass es viel einfacher, mit zu arbeiten. stackoverflow.com/questions/15778599/... Kommentarautor: Kieran
Mit momentjs ist die beste Möglichkeiten zum Umgang mit Daten finden Sie meine Antwort auf diese Frage. Kommentarautor: Ajay Kelkar

InformationsquelleAutor der Frage Mark Coleman | 2012-01-04

Schreibe einen Kommentar