Maison >développement back-end >C++ >Comment transmettre des tableaux d'objets complexes aux contrôleurs ASP.NET MVC à l'aide de JSON ?

Comment transmettre des tableaux d'objets complexes aux contrôleurs ASP.NET MVC à l'aide de JSON ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-01 02:28:09299parcourir

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

Passer des tableaux d'objets complexes aux contrôleurs ASP.NET MVC

Dans ce scénario, vous cherchez à transmettre un tableau d'objets complexes à un action du contrôleur. Pour y parvenir, plusieurs étapes sont nécessaires.

Préparation de la vue

Le code fourni dans la question prépare déjà un tableau d'objets. La clé ici est de transformer ce tableau dans un format JSON pouvant être analysé par le contrôleur. Pour ce faire, utilisez la fonction $.toJSON() de la bibliothèque jQuery, comme le montre le code de vue amélioré de la solution :

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

Décorer l'action du contrôleur

Pour que l'action du contrôleur accepte et traite les données JSON, elle doit être décorée avec un attribut personnalisé. Dans ce cas, nous utilisons l'attribut JsonFilter :

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

La propriété Param spécifie le nom du paramètre qui recevra les données JSON, et JsonDataType définit le type de données attendu pour la désérialisation.

Fonctionnalité d'attribut personnalisé

L'implémentation de JsonFilterAttribute intercepte la requête HTTP et vérifie si il contient du contenu JSON. Si tel est le cas, il désérialise le JSON dans le type de données spécifié à l'aide de JsonConvert.DeserializeObject de Json.NET et l'attribue au paramètre d'action correspondant.

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

En suivant ces étapes, vous pouvez transmettre avec succès des tableaux de complexes objets de votre vue vers votre contrôleur ASP.NET MVC.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn