ASP.NET mvc 4 paramètre de contrôleur toujours null lors de l'envoi de JSON au contrôleur, pourquoi?
Il y a certains des postes similaires déjà ici, et j'ai essayé toutes les solutions proposées, et ne fonctionne toujours pas... je ne peux pas obtenir la valeur à l'intérieur de contrôleur, il est toujours null. Ci-dessous est le code. Ai-je raté quelque chose?
Côté Client javascript
function getChart() {
JSONString3 = { HAxis : [{ Name : "monday" }] };
jQuery.ajaxSettings.traditional = true;
$.ajax({
url: "@Url.Action("getChart","SBM")",
type: 'POST',
contentType: 'json',
dataType: 'html',
data: JSONString3,
success: function (data) {
var imagestring = btoa(data);
$('#ChartImage').attr('src', "data:image/png;base64," + imagestring + "?" + new Date().getTime());
}
})
jQuery.ajaxSettings.traditional = false;
}
MVC Contrôleur
[Authorize]
[HttpPost]
public ActionResult getChart(YAxis HAxis)
{
YAxis XAxisvalue = HAxis;
Charts chart = new Charts();
MemoryStream ms = new MemoryStream();
chart.Chart.SaveImage(ms);
string image = Convert.ToBase64String(ms.GetBuffer());
return File(ms.GetBuffer(), "image/png", "Chart.png");
}
Modèle
public class YAxis
{
public string Name { get; set; }
}
source d'informationauteur Gašper Sladič
Vous devez vous connecter pour publier un commentaire.
Merci les gars pour les directions et les solutions. La solution est une combinaison de tous vos conseils, j'ai donc décidé de autour d'elle dans un post.
Solution au problème est comme suit:
contentType
devrait êtreapplication/json
(Ant P suggéré ci-dessus)JSONString3 = {"Name" : "monday" }
(Ant P suggéré ci-dessus)stringifyed
comme suit:JSONString3 = JSON.stringify(JSONString3)
(comme Quan suggéré)Côté Client javascript
MVC Contrôleur
Modèle
Au lieu de cela:
nous pouvons le faire:
Mais nous avons encore besoin de stringify objet avant de poster sur le contrôleur!!!
Côté Client javascript
MVC Contrôleur
Catégorie modèle
XAxis modèle
Ordonnée, modèle
Espère que ça va aider quelqu'un à clarifier la totalité de l'image!
J'ai eu le même problème (paramètre toujours null), mais ma solution est différente.
Assurez-vous que votre ActionResult paramètre de méthode n'a pas le même nom que l'objet JSON de la propriété.
Dans cet exemple j'ai renommé myParam à myNewParam à différencier de MyParam propriété.
Exemple:
Cela ne fonctionne pas:
Cela fonctionne:
Me semble que vous essayez de transmettre un tableau d'objets:
Lorsque votre action ne veut qu'une:
Peut-être que vous ne voulait passer?
Vous devez poster pour le contrôleur comme une chaîne de caractères, afin de l'utiliser JSON.stringify pour convertir, je ne sais pas comment utiliser votre ajax, je sais juste utiliser $.poste... T_T
Contrôleur,
** Remarque : JsonConvert est la méthode de l'aide Newtonsoft.Json; , s'il vous plaît ajouter Newtonsoft de référence.
L'ajout d'un attribut type de données pour la méthode de contrôleur résolu pour moi.