Heim >Backend-Entwicklung >C++ >Wie übergebe ich Arrays komplexer Objekte mithilfe von JSON an ASP.NET MVC-Controller?

Wie übergebe ich Arrays komplexer Objekte mithilfe von JSON an ASP.NET MVC-Controller?

Susan Sarandon
Susan SarandonOriginal
2025-01-01 02:28:09300Durchsuche

How to Pass Arrays of Complex Objects to ASP.NET MVC Controllers Using JSON?

Arrays komplexer Objekte an ASP.NET MVC-Controller übergeben

In diesem Szenario möchten Sie ein Array komplexer Objekte an a übergeben Controller-Aktion. Um dies zu erreichen, sind mehrere Schritte notwendig.

Vorbereitung der Ansicht

Der bereitgestellte Code in der Frage bereitet bereits ein Array von Objekten vor. Der Schlüssel hier besteht darin, dieses Array in ein JSON-Format umzuwandeln, das vom Controller analysiert werden kann. Verwenden Sie dazu die Funktion $.toJSON() aus der jQuery-Bibliothek, wie im verbesserten Ansichtscode der Lösung zu sehen ist:

function getplaceholders() {
    // ...
    var postData = { widgets: results };
    $.ajax({
        // ...
        data: $.toJSON(widgets),
        // ...
    });
}

Decorating the Controller Action

Damit die Controller-Aktion die JSON-Daten akzeptieren und verarbeiten kann, muss sie mit einem benutzerdefinierten Attribut versehen werden. In diesem Fall verwenden wir das JsonFilter-Attribut:

[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))]
public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets)

Die Param-Eigenschaft gibt den Parameternamen an, der die JSON-Daten empfängt, und JsonDataType definiert den erwarteten Datentyp für die Deserialisierung.

Benutzerdefinierte Attributfunktionalität

Die JsonFilterAttribute-Implementierung fängt die HTTP-Anfrage ab und prüft, ob sie Folgendes enthält JSON-Inhalt. Wenn ja, deserialisiert es das JSON mithilfe von JsonConvert.DeserializeObject von Json.NET in den angegebenen Datentyp und weist es dem entsprechenden Aktionsparameter zu.

public class JsonFilter : ActionFilterAttribute
{
    // ...
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // ...
        var result = JsonConvert.DeserializeObject(inputContent, JsonDataType);
        filterContext.ActionParameters[Param] = result;
    }
}

Durch Befolgen dieser Schritte können Sie komplexe Arrays erfolgreich übergeben Objekte aus Ihrer Sicht auf Ihren ASP.NET MVC-Controller.

Das obige ist der detaillierte Inhalt vonWie übergebe ich Arrays komplexer Objekte mithilfe von JSON an 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