2017-10-16 2 views
0

Je suis en train de retourner la liste de la liste JSON de mon contrôleur,retour Liste des Liste JSON retourne des valeurs de liste nulle

mon code contrôleur:

using Newtonsoft.Json; 

[HttpGet] 
public JsonResult GetPpi() 
{ 
    var customer = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer; 
    var psg = _xDetailService.GetXDetailbyCustomerId(customer.Id); 

    var model2 = new List<List<XDetail>>(); 

    foreach (var pr in psg) 
    {    
     var plan = _xDetailService.GetXDetailbyId(pr.Id); 
     var model = new List<XDetail>(); 
     foreach (var x in plan) 
     { 
      model.Add(new XDetail 
      { 
       Id = x.Id, 
       XNo = x.XNo, 
       XName = x.XName, 
       XSurname = x.XSurname 
      }); 
     } 
     model2.Add(model); 
    } 

    return Json(model2, JsonRequestBehavior.AllowGet); 
} 

et mon appel ajax:

function GetPlans() { 
    $.ajax({ 
     cache: false, 
     type: "GET", 
     url: "/XDetail/GetPpi", 
     data: {}, 
     dataType: 'json', 

    }); 
} 

XDetail:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Nop.Core.Domain.UnExpected 
{ 
    public partial class XDetail: BaseEntity 
    { 
     public int? XNo { get; set; } 

     public string XName { get; set; } 

     public string XSurname { get; set; } 

     public double? XDec { get; set; } 

     public int? XMaster_Id { get; set; } 

     public virtual XMaster XMaster { get; set; } 
    } 
} 

Lorsque je mets un point d'arrêt au retour, model2 contient toutes les valeurs dont j'ai besoin dans List of List. Mais si je continue, ils reviennent comme nul.

je manque quelque chose mais je ne pouvais pas trouver ce que ...

et aussi en utilisant réSEAU Mvc 5

+0

Partagez votre méthode 'Json'? –

+0

Modifié la question à vos commentaires –

+0

Qu'est-ce que 'BaseEntity'? Si elle est marquée avec '[DataContract]', vous devrez également annoter votre classe dérivée avec des attributs de contrat de données. En effet, AspNet Mvc 5 utilise Json.NET pour la sérialisation, et Json.NET l'exige comme expliqué dans [Problème de sérialisation caliburn.micro lors de l'implémentation de PropertyChangedBase] (https://stackoverflow.com/a/29203876/3744182). Sinon, faites 'XDetail' soit un simple DTO sans type parent. – dbc

Répondre

2

Votre appel $.ajax(..) ne fournit aucune fonction de rappel de succès Vous pouvez le faire comme ça:

function GetPlans() { 
    $.ajax({ 
     cache: false, 
     type: "GET", 
     url: "/XDetail/GetPpi", 
     data: {}, 
     dataType: 'json', 
     success: function(data) { 
      // use result data 
     } 

    }); 
} 

ou à l'approche de la promesse:

function GetPlans() { 
    $.ajax({ 
     cache: false, 
     type: "GET", 
     url: "/XDetail/GetPpi", 
     data: {}, 
     dataType: 'json' 
    }).done(function(data){ 
     // use result data 
    }); 
} 
+0

merci pour la réponse mais mon code fonctionnait déjà très bien. Je ne l'ai simplement pas vu. J'accepterai la réponse de toute façon puisque c'est ma faute de ne pas le voir :) Ty. –