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

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

Mary-Kate Olsen
Libérer: 2025-01-02 15:01:37
original
251 Les gens l'ont consulté

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

jQuery et ASP.NET MVC : publication d'un tableau d'objets complexes avec JSON

Problème :

Comment transmettre un tableau d'objets complexes à un contrôleur ASP.NET MVC à partir d'une requête jQuery AJAX ? Quels paramètres l'action du contrôleur doit-elle accepter ?

Solution :

Pour publier un tableau d'objets complexes sur un contrôleur à l'aide de jQuery et JSON, suivez ces étapes :

  1. Sérialiser le tableau en JSON :

    Utiliser JSON.stringify() pour convertir le tableau d'objets en chaîne JSON.

  2. Définissez les en-têtes de requête :

    Spécifiez le type de contenu en-tête vers application/json ; charset=utf-8.

  3. Utilisez la méthode $.ajax() :

    Créez une requête AJAX à l'aide de $.ajax() méthode et fournissez les données JSON comme paramètre de données.

Contrôleur Action :

Décorez l'action de votre contrôleur avec un attribut personnalisé (JsonFilter) pour désérialiser les données JSON. L'attribut doit spécifier le nom du paramètre et le type de données JSON.

Attribut personnalisé (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;
        }
    }
}
Copier après la connexion

Exemple :

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'
    });
}
Copier après la connexion

Action du contrôleur :

[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))]
public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets)
{
    // ...
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal