SORU
7 NİSAN 2009, Salı


ASP.NET MVC JsonResult Tarih Biçimi

Etkili sadece benim model bir JsonResult döndüren denetleyici bir eylem var. Yani, benim yöntem aşağıdaki gibi bir şey var:

return new JsonResult(myModel);

Bu iyi çalışıyor, bir sorun dışında. Bir tarih modeli özelliği var ve bu çok gibi Json sonuç verdi gibi görünüyor:

"\/Date(1239018869048)\/"

Nasıl ihtiyacım biçiminde döndürülür, tarih ile ilgili olmalı? Ya bu ne biçim senaryo yukarıda yapmalıyım?

CEVAP
7 NİSAN 2009, Salı


casperOne's answer genişletmek için.

JSON spec Tarihi değerleri hesaba katmaz. MS vardı bir ara, ve yolunu seçtiler oldu sömürmek için küçük bir hile javascript temsil dizeleri dize literal "/" aynı şekilde "\/", ve bir dizeaslasıralanmış "\/" (hatta "\/" eşlenmesi gerekir "\\/").

Daha iyi bir açıklama için http://msdn.microsoft.com/en-us/library/bb299886.aspx#intro_to_json_topic2 (aşağı kaydırın "JSON JavaScript Hazır bilgi")

Bir JSON boğaz noktası. saat/tarih eksikliği değişmez. Birçok insanlar şaşırmış ve hayal kırıklığına uğramıştır bunu öğrenmek zaman önce JSON karşılaşma. En basit açıklama (teselli ya da yokluğu için zaman değişmez bir tarih/JavaScript. hiç biri de vardı: desteği JavaScript tarih ve saat değerleri. tamamen Tarih ile sağlanan nesne. Çoğu uygulama kullanarak JSON veri biçimi olarak, bu nedenle, genellikle ya da bir dize ya da kullanma eğiliminde tarih ifade etmek için sayı ve zaman değerler. Eğer bir dize kullanılır. genellikle ISO bekliyoruz 8601 biçimi. Eğer bir sayı kullanılırsa, bunun yerine, değer genellikle sayısı anlamina Evrensel milisaniye Koordine Epoch beri zaman (UTC), Çağ tanımlanan gece yarısı 1 Ocak 1970 (UTC). Yine, bu daha fazla ve JSON parçası kuralı değil standart. Eğer veri alışverişi varsa başka bir uygulama ile, sen-ecek öğrenmek için belgelerini kontrol etmek lazım nasıl tarih ve saat değerleri kodlar bir JSON edebi içinde. Örneğin, Microsoft AJAX ne kullanır ASP.NET ... açıklanan kuralları. Daha doğrusu, bu kodlar .NET bir tarih saat gibi değerler Nerede içeriğini JSON dize string(kene) /Tarih/ ve nerede keneler milisaniye beri temsil eder epoch (UTC). Yani 29 Kasım 1989, UTC 4:55:30 AM, olarak kodlanır "\/Tarih(628318530718)\/".

Bir çözüm sadece ayrıştırılamadı olacaktır:

value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));

Ancak bir yerde seri hale getirici new Date(xxx) sözdizimi ile DateTime nesneleri çıkış için bir ayar olduğunu duymuştum. O kazmak için çalışacağım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006
  • Marques Brownlee

    Marques Brow

    21 Mart 2008