2012-08-16 6 views
0

J'utilise EF pour interroger la base de données en utilisant le type anonyme.Comment formater les données pour json

ici le code que j'utilise pour EF

public JsonResult OverdueEventsCustom() 
    { 
     var eventCustomOverdue = _eventCustomRepository.FindOverdueEventsCustom(); 
     return Json(eventCustomOverdue, JsonRequestBehavior.AllowGet); 
    } 


    public IQueryable<dynamic> FindOverdueEventsCustom() 
    { 
     DateTime dateTimeNow = DateTime.UtcNow; 
     DateTime dateTomorrow = dateTimeNow.Date.AddDays(1); 
     return db.EventCustoms.Where(x => x.DateTimeStart < dateTomorrow) 
        .Select(y => new { y.EventId, y.EventTitle, y.DateTimeStart}); 
    } 

Contrôle en utilisant le débogueur que je vois les propriétés est dans ce format

Date = {16/08/2012 00:00:00} 

Le resultfor JSON est

[{ 
    "EventId": 1, 
    "EventTitle": "Homework Math", 
    "DateTimeStart": "\/Date(1345108269310)\/" 
}, { 
    "EventId": 4, 
    "EventTitle": "Homework help with Annie", 
    "DateTimeStart": "\/Date(1345108269310)\/" 
}, { 
    "EventId": 6, 
    "EventTitle": "Physic laboratory", 
    "DateTimeStart": "\/Date(1345108269310)\/" 
}] 

I besoin du json dans ce format

Une idée de ce que je fais mal ici? Merci pour votre aide

articles connexes

http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

How do I format a Microsoft JSON date?

+1

Pourquoi avez-vous besoin de la date au format '" (16/08/2012) "'? C'est une limitation du 'JavaScriptSerializer' et il n'y a pas de solution simple voir: http://stackoverflow.com/questions/726334/asp-net-mvc-jsonresult-date-format. Comme une solution alternative, vous pouvez utiliser [Json.Net] (http://james.newtonking.com/projects/json-net.aspx) pour la sérilisation json. – nemesv

Répondre

1

"\/Date(1345108269310)\/" est la bonne façon de passer une date à javascript. La façon dont je le vois, vous avez deux options ici:

Si vous n'avez pas explicitement besoin de la valeur comme une date, vous pouvez simplement passer une chaîne à la variable JSON, contenant la date pretty-printed. Quelque chose le long des lignes de:

DateTimeStart: String.Format("{0: dd-MM-yyyy}", myDate) 

Si vous aurez toujours besoin d'utiliser la date aa variable javascript (pour les calculs par exemple), le plus Concise et lisiblement serait ainsi de créer une fonction javascript qui convertit ledit date dans la chaîne jolie impression que vous voulez (je ne sais pas si une telle fonction existe déjà il est pas trop difficile de créer si:.

function prettyDate(date) { 

    return date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear(); 

} 

Je dirais qu'il en passant le long comme une chaîne de vous code derrière, car il est plus lisible, mais cela ne fonctionne que si vous n'avez pas besoin d'utiliser la date à l'exception de l'affichage

Questions connexes