Maison >développement back-end >C++ >Comment transmettre des tableaux d'objets complexes aux contrôleurs ASP.NET MVC à l'aide de 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!