2016-04-24 5 views
1

Ich sende eine Anfrage, um das GeneralDictViewmodel Objekt und seine Wörterbücher zu erhalten, aber es erhält nur sich selbst, nicht seine Wörterbücher in der AJAX-Antwort. Wie kann ich das lösen?Lesen MVC-Modell in AJAX-Antwort

$.ajax({ 
     url: getAllGeneralDictUrl, 
     type: 'POST', 
     cache: false, 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data, status, resObject) { 
      alert("success..." + data); 

     }, 
     error: function (xhr) { 
      alert(xhr.responseText); 
     } 
    }); 


    public JsonResult GetAllGeneralDict() 
    { 
      GeneralDictServiceClient generalDictSvc = new GeneralDictServiceClient(); 
      GeneralDictViewModel generalDictRes = new GeneralDictViewModel(); 
      generalDictRes.ShipTypes = generalDictSvc.GetGeneralDict("SHIP_TYPE").ToDictionary(x => x.KEY_ITEM, x => x.VALUE_ITEM); 
      generalDictRes.BodyMaterials = generalDictSvc.GetGeneralDict("BODY_MATERIAL").ToDictionary(x => x.KEY_ITEM, x => x.VALUE_ITEM); 
      generalDictRes.Designations = generalDictSvc.GetGeneralDict("DESIGNATION").ToDictionary(x => x.KEY_ITEM, x => x.VALUE_ITEM); 
      return Json(generalDictRes); 
    } 
+0

scheint ein Problem in der URL ist. Verwenden Sie url: getAllGeneralDict anstelle von url: getAllGeneraldDictUrl, –

+0

, aber es senden Sie eine Anfrage an die Aktion. Ich könnte es debuggen – HesenliEldar

+0

, wenn ich zurückschicke (neue Zeichenfolge ("etwas")) es funktioniert, aber nicht mit Modell arbeiten. Ist es möglich, ein Problem mit der Eigenschaft des Modells zu haben, die Dictionary sind? – HesenliEldar

Antwort

0

Zunächst einmal sollten Sie sollten „GET“ in Ihrem Ajax-Aufruf, wenn Sie Daten abgerufen werden.

try { 
    $.ajax({ 
     url: 'template/GetAllGeneralDict', 
     type: 'POST', 
     cache: false, 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data, status, resObject) { 
      alert("success..." + data); 

     }, 
     error: function (xhr) { 
      alert(xhr.responseText); 
     } 
    }); 
} catch (e) { 
    window.location.href = SiteRootPath + "default.aspx"; 
    $('#loading').hide(); 
} 

Zweitens: Sie sollten

in Ihrer Rückkehr Funktion auf Controller-JsonRequestBehavior.AllowGet mit den JSON-Daten schreiben
public JsonResult GetAllGeneralDict() 
     { 
      var abcObj = new Animal() { Id = 1, Name = "ZTom" }; 

      return Json(abcObj, JsonRequestBehavior.AllowGet); 
     }