Das vereinfachen eines komplexen json-Objekt für mvc-Bindung
Mein controller ist wieder ein Objekt, Diagramm-Ansicht im json-format wie dieses
return Json(customer);
Ansicht auf meine json-Objekt sieht wie folgt aus
{
Name: 'Joe',
Budget: { Amount: 500, Spend: 100 }
}
Die Karten richtig zu meinen Kunden Objekt:
public class Customer
{
public string Name {get;set;}
public Budget Budget{get;set;}
}
public class Budget
{
public decimal Amount{get;set;}
public decimal Spend{get;set;}
}
Möchte ich weitergeben, dass die gleichen json-Objekt zurück, zu einer anderen Methode auf dem controller, die mit dieser Signatur:
public ActionResult Method(Customer customer)
Wenn ich diese Namen des Kunden bekommen, aufgefüllt, aber nicht das Budget-Klasse, die ich verstehen, warum da der modelbinder wird erwartet: {Name:'Joe','Budget.Betrag':500,'Budget.Verbringen': 100}
So habe ich zwei Möglichkeiten:
1. Ich kann das json-Objekt in das format-es will, aber ich weiß nicht wie, denn Sie können nicht dies tun:
return Json(new { Budget.Amount= 500})
- Ich reduzieren können, das json-Objekt auf der client-Seite. Gibt es plugins oder Methoden, dies zu tun?
- aber Sie können dies tun, richtig? nicht sicher, ob dies löst Ihr problem: return Json(new { Budget = new { Betrag = 500 }})
- ich bin versucht zu glätten json-Objekt so, dass das Ergebnis '{ 'Budget.Amount = 500 }'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Funktion, die konvertieren eines Objekts in eine flache hash
Protovis ist ein JavaScript-flattener, verfügbar unter der BSD-Lizenz.
In meinem Fall haben wir es gelöst, die durch die übergabe von zusätzlichen Objekt an die action-url.
public ActionResult Methode(Kunde Kunde, [Bind(Prefix="Budget")]Budget budget)
um dies möglich zu machen, müssen Sie glätten die json-Daten (bevor Sie versendet es an controller) in folgender Weise:
Gewusst wie: übergeben Sie einen komplexen Typ mit json zu ASP.NET MVC-controller