0
votes

Comment transmettre une gamme JSON d'objet de type à la classe de contrôleur MVC

J'essaie de passer à travers un réseau JSON à mon contrôleur. Je souhaite pouvoir publier des données à la base de données à partir d'une matrice JSON qui est peuplée et transmise au contrôleur via JavaScript du côté du client. Cependant, il ne reçoit rien dans le contrôleur. Mon contrôleur a reçu une valeur nulle comme paramètre.

Ce qui suit est mon contrôleur: xxx

Ce qui suit est mon javascript: xxx

Ce qui suit est ma classe : xxx

Je m'attends à recevoir la liste de tableau de bord dans Savedashboard, mais je reçois Null


3 commentaires

Votre nom de variable ou votre type de données peut être incompatible. S'il vous plaît vérifier cela une fois.


Vous envoyez Dashboards en tant que chaîne, essayez d'envoyer l'objet lui-même (pas de stringify)


Je reçois l'erreur réseau suivante: primitive JSON non valide: objet. quand il tente d'accéder au contrôleur. Qu'est-ce qui pourrait causer ça?


3 Réponses :


2
votes

Il existe deux façons de transmettre l'objet JS comme Liste code> à l'aide d'Ajax:

1) Mettez json.stringify code> avec l'objet lui-même et défini Traditional: TRUE CODE> Option, seul un seul paramètre doit être défini: p>

$.ajax({
    url: '/KPIReportAdmin/SaveDashboard',
    type: "POST",
    dataType: "json",
    data: $.param({ dashboards: dashboards }, true),
    success: function (result)
    {

    },
    error: function (result) {
        alert("Failed");
    }
});


0 commentaires

1
votes

Comme je vois que le problème est dans votre fichier JSON. Dans votre Json, vous avez une propriété appelée "DashboardName" où dans API, c'est appelé "nom". Hauteur, largeur, userid Int, mais votre chaîne de passage.

Essayez de changer vos valeurs comme ci-dessous p>

p>

var dashboards = {
    "Name": "",
    "Width": 0,
    "Height": 0,
    "UserID": 0,
    "DashboardCell": [
    {
      "Width": 0,
      "Height": 0,
      "Active": false,
      "colspan": 0,
      "rowspan": 0,
      "x": 0,
      "y": 0,
      "CellValue: "",
      "DashCellId: "",
      "cellClass: "",
      "previousElementSibling": 0
    }
  ]
};


0 commentaires

0
votes

J'ai également constaté que dans mon contrôleur, je passais à travers une liste de tableau de bord où je n'avais qu'à ajouter Dashboards de tableau de bord car la liste se trouve dans la classe de tableau de bord.

faire aussi ce que Tetsuya Yamamoto a suggéré de l'aider.

Merci tout le monde!


0 commentaires