Maison >développement back-end >C++ >Comment puis-je transmettre efficacement des tableaux JSON complexes de jQuery aux contrôleurs ASP.NET MVC ?

Comment puis-je transmettre efficacement des tableaux JSON complexes de jQuery aux contrôleurs ASP.NET MVC ?

DDD
DDDoriginal
2025-01-04 20:26:41251parcourir

How Can I Efficiently Pass Complex JSON Arrays from jQuery to ASP.NET MVC Controllers?

JSON et jQuery : transmission de tableaux complexes aux contrôleurs ASP.NET MVC

Dans les scénarios où nous devons envoyer un tableau d'objets complexes à une action du contrôleur, il est essentiel de considérer la compatibilité entre le code côté client et côté serveur. Examinons l'approche décrite par Steve Gentile pour résoudre ce défi.

Traitement côté client

Le code jQuery :

function getplaceholders() {
    // Collect data into an array
    var results = new Array();
    ...
    var postData = { widgets: results };
    // Send data to the controller with JSON serialization
    $.ajax({
        url: '/portal/Designer.mvc/SaveOrUpdate',
        ...
        data: $.toJSON(widgets),
        ...
    });
}

Ici , les données sont rassemblées dans un tableau, enveloppées dans un objet JSON et sérialisées pour être transmises au serveur.

Configuration de l'action du contrôleur

L'action du contrôleur ASP.NET MVC :

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

L'attribut [JsonFilter] personnalise l'action à recevoir Données JSON. Il définit le nom du paramètre ("widgets") et spécifie le type de données JSON attendu (List).

Attribut de filtre JSON personnalisé

public class JsonFilter : ActionFilterAttribute
{
    ...
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Request.ContentType.Contains("application/json"))
        {
            // Deserialize JSON data from request body
            string inputContent = ...;
            var result = JsonConvert.DeserializeObject(inputContent, JsonDataType);
            // Assign the deserialized object to the specified parameter
            filterContext.ActionParameters[Param] = result;
        }
    }
}

L'attribut de filtre JSON personnalisé JsonFilter intercepte les requêtes avec le type de contenu JSON, désérialise les données JSON à l'aide de la classe JsonConvert de Json.NET et attribue le résultat au paramètre d'action approprié.

En utilisant cette approche, nous établissons efficacement une communication entre les données côté client et l'action côté serveur, permettant au contrôleur de traiter le tableau complexe d'objets reçus en JSON. format.

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