Maison >développement back-end >C++ >Comment publier un tableau d'objets complexes sur un contrôleur ASP.NET MVC à l'aide de JSON et jQuery ?

Comment publier un tableau d'objets complexes sur un contrôleur ASP.NET MVC à l'aide de JSON et jQuery ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-02 20:25:38910parcourir

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

Publication de tableaux d'objets complexes avec JSON et jQuery sur un contrôleur ASP.NET MVC

Problème :

Comment un tableau d'objets complexes peut-il être transmis à une action de contrôleur ASP.NET MVC et quels paramètres doivent L'action du contrôleur est-elle acceptée ?

Méthode d'action du contrôleur :

La méthode d'action du contrôleur doit avoir un paramètre de type IList.

Code côté client :

À l'aide de jQuery, convertissez le tableau d'objets en une chaîne JSON et envoyez-la au contrôleur via une requête AJAX avec les en-têtes de type de données et de type de contenu corrects.

Code côté client - Amélioré :

Pour mieux gestion du contenu JSON, utilisez la bibliothèque Json.NET et définissez JsonDataType sur le type du tableau à désérialiser. Cela permet à l'action ASP.NET MVC de se lier directement à l'objet désérialisé sans analyse manuelle.

Décoration de l'action du contrôleur ASP.NET MVC :

Décorez l'action du contrôleur avec un attribut personnalisé comme [JsonFilter] pour intercepter la requête JSON entrante et désérialiser l'objet correct dans l'action paramètre.

Code JsonFilterAttribute :

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;
        }
    }
}

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