Heim >Backend-Entwicklung >C++ >Wie poste ich ein Array komplexer Objekte von jQuery mit JSON an einen ASP.NET MVC-Controller?
jQuery und ASP.NET MVC: Posten eines Arrays komplexer Objekte mit JSON
Problem:
Wie können Sie ein Array komplexer Objekte aus einer jQuery-AJAX-Anfrage an einen ASP.NET MVC-Controller übergeben? Welche Parameter sollte die Controller-Aktion akzeptieren?
Lösung:
Um ein Array komplexer Objekte mithilfe von jQuery und JSON an einen Controller zu senden, befolgen Sie diese Schritte:
Serialisieren Sie das Array in JSON:
Verwenden Sie JSON.stringify(), um das Array von Objekten in einen JSON-String zu konvertieren.
Legen Sie die Anforderungsheader fest:
Geben Sie den Content-Type-Header für application/json an; charset=utf-8.
Verwenden Sie die Methode $.ajax():
Erstellen Sie eine AJAX-Anfrage mit der Methode $.ajax() Methode und stellen Sie die JSON-Daten als Datenparameter bereit.
Controller Aktion:
Dekorieren Sie Ihre Controller-Aktion mit einem benutzerdefinierten Attribut (JsonFilter), um die JSON-Daten zu deserialisieren. Das Attribut sollte den Parameternamen und den JSON-Datentyp angeben.
Benutzerdefiniertes Attribut (JsonFilter):
public class JsonFilter : ActionFilterAttribute { public string Param { get; set; } public Type JsonDataType { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Request.ContentType.Contains("application/json")) { string inputContent; using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream)) { inputContent = sr.ReadToEnd(); } var result = JsonConvert.DeserializeObject(inputContent, JsonDataType); filterContext.ActionParameters[Param] = result; } } }
Beispiel:
JavaScript:
function getplaceholders() { var widgets = []; // ... populate the array $.ajax({ url: '/portal/Designer.mvc/SaveOrUpdate', type: 'POST', dataType: 'json', data: JSON.stringify(widgets), contentType: 'application/json; charset=utf-8' }); }
Controller-Aktion:
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets) { // ... }
Das obige ist der detaillierte Inhalt vonWie poste ich ein Array komplexer Objekte von jQuery mit JSON an einen ASP.NET MVC-Controller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!