Ich habe eine Ansicht, mit der ein Benutzer Daten für ein neues Widget eingeben/bearbeiten kann. Ich möchte diese Daten in einem JSON-Objekt bilden und über AJAX an meinen Controller senden, damit ich die Validierung auf dem Server ohne Postback durchführen kann.Wie komplexen Typ übergeben mit Json zu ASP.NET MVC-Controller
Ich habe alles funktioniert, aber ich kann nicht herausfinden, wie die Daten übergeben werden, so dass meine Controller-Methode einen komplexen Widget-Typ statt einzelner Parameter für jede Eigenschaft akzeptieren kann.
Also, wenn dies mein Ziel ist:
public class Widget
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
ich mein Controller-Methode möchte etwas wie folgt aussehen:
public JsonResult Save(Widget widget)
{
...
}
Derzeit sieht mein jQuery wie folgt aus:
var formData = $("#Form1").serializeArray();
$.post("/Widget/Save",
formData,
function(result){}, "json");
Mein Formular (Form1) hat ein Eingabefeld für jede Eigenschaft auf dem Widget (ID, Name, Preis). Das funktioniert großartig, aber letztendlich übergibt es jede Eigenschaft des Widgets als einen separaten Parameter an meine Controller-Methode.
Gibt es eine Möglichkeit, die Daten "abzufangen", vielleicht mit einem ActionFilterAttribute, und es zu einem Widget-Objekt zu deserialisieren, bevor meine Controller-Methode aufgerufen wird?
Ehrfürchtig, froh, dass Sie es behoben haben. Und danke, dass du gepostet hast, wie du es repariert hast, das wird anderen in Zukunft viel helfen! –
Öffentliche Felder sind der Teufel in .NET. Sie brechen alles. ALLES, was ich Ihnen erzähle! – Will
Danke. Das hat mir geholfen. –