Heim >Backend-Entwicklung >C++ >Wie poste ich ein Array komplexer Objekte von jQuery mit JSON an einen ASP.NET MVC-Controller?

Wie poste ich ein Array komplexer Objekte von jQuery mit JSON an einen ASP.NET MVC-Controller?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-02 15:01:37255Durchsuche

How to Post an Array of Complex Objects from jQuery to an ASP.NET MVC Controller Using JSON?

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:

  1. Serialisieren Sie das Array in JSON:

    Verwenden Sie JSON.stringify(), um das Array von Objekten in einen JSON-String zu konvertieren.

  2. Legen Sie die Anforderungsheader fest:

    Geben Sie den Content-Type-Header für application/json an; charset=utf-8.

  3. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn