2013-01-15 4 views
0

J'ai un modèle de vue qui ressemble à ceci:Créer un objet JSON de C# classe

public class CategoriesJsonViewModel 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
    public List<Description> UsedDescriptions { get; set; } 
    public List<Description> UnusedDescriptions { get; set; } 
} 

Je crée une liste de CategoriesJsonViewModel dans mon contrôleur et d'essayer de l'envoyer au navigateur client au format JSON. J'utilise la méthode JSON() pour le faire:

List<CategoriesJsonViewModel> categoriesVM = new List<CategoriesJsonViewModel>(); 
List<Category> categories = repo.GetAllCategories(); 
foreach(var i in categories) 
{ 
      CategoriesJsonViewModel categoryVM = new CategoriesJsonViewModel(); 
      categoryVM.Id = i.Id; 
      categoryVM.Title = i.Title; 
      categoriesVM.Add(categoryVM); 
      categoryVM.UsedDescriptions = repo.GetUsedDescriptions(i.Id); 
      categoryVM.UnusedDescriptions = repo.GetUnusedDescriptions(i.Id); 
} 


return Json(categoriesVM); 

Bien que l'objet categoriesVM est construit correctement, je ne reçois pas l'objet JSON approprié à partir pour une raison quelconque. Pourquoi est-ce vrai?

+3

"Je ne reçois pas l'objet JSON approprié" - qu'est-ce ** spécifiquement ** différent/inapproprié? –

+1

Vous devrez peut-être afficher la sortie JSON attendue par rapport à la sortie JSON réelle. –

+0

Quelle erreur obtenez-vous? – HaBo

Répondre

1

Je suggère que vous obtenez le JSON et à mettre en émis jsonlint.com

qui va vous aider à trouver ce qui est à l'origine du JSON est invalide. C'est peut-être quelque chose à voir avec votre définition de l'objet Description car votre CategoriesJsonViewModel a l'air d'aller bien.

+0

Comment puis-je récupérer le JSON produit dans Json()? – Bartosz

+0

Firebug manifeste 500 Erreur de serveur interne – Bartosz

+0

Dans votre contrôleur assurez-vous que vous avez renvoyé Json (categoriesVM, JsonRequestBehavior.AllowGet) - vous devriez alors pouvoir voir le json renvoyé dans Firebug. – Matt27