2010-12-15 92 views
0

Je ne sais pas quel est le problème, mais je construis une chaîne et j'essaie de la transmettre à mon Controller Action. Mais lorsque l'action est exécutée, les données sont nulles.ASP.NET MVC 2: la chaîne de publication jQuery est null?

JavaScript:

var xml = "<Request><ZipCode>92612</ZipCode></Request>"; 

$.ajax({ 
    url: "/Home/GetXml", 
    contentType: 'application/text; charset=utf-8', 
    data: xml, 
    success: function (result) { success(result); }, 
    type: "POST", 
    datatype: "text" 
}); 

Controller:

[HttpPost] 
public ActionResult GetXml(string data) 
{ 
    if (!String.IsNullOrEmpty(data)) 
    {  
     return View("Index", data); 
    } 

    return View("Index"); 
} 

Si je mets un point d'arrêt sur le if, les "données" est nulle. Ce qui donne?

Répondre

1

essayer avec

$.ajax({ 
    url: "/Home/GetXml", 
    contentType: 'application/text; charset=utf-8', 
    data: { data: xml }, 
    success: function (result) { success(result); }, 
    type: "POST", 
    datatype: "text" 
}); 
+0

Il passe un dataType texte, non JSON. Cela va changer les paramètres de la requête. –

+0

Peu importe ce que je fais, les données sont toujours nulles. J'ai essayé d'utiliser à la fois post et ajax. Aucune différence. – dcolumbus

+0

@dcolumbus: J'ai édité ma réponse. J'ai écrit si vite et j'ai oublié d'ajouter le nom de la variable. Le ModelBinder par défaut fera le travail – Lorenzo

2

La réponse: ne pas utiliser contentType

Merci à cette question et répondre: Asp.Net Mvc JQuery ajax input parameters are null

+0

J'étais sur le point de publier cette solution après avoir manipulé le code dans Visual Studio. Je suis content que tu l'aies. Vous remarquerez probablement aussi que vous allez devoir désactiver la validation des requêtes pour l'action GetXml. ASP.NET retournera un hoo-hah si vous essayez de lui envoyer une requête contenant du XML brut. –

+0

Désactiver la validation de la demande? Ce que je remarque est que ma requête ajax me donne un succès, mais aucun de mes points d'arrêt dans l'action du contrôleur n'est en cours d'exécution. Me dit que je ne suis pas vraiment à l'action ... – dcolumbus

+0

Si vous ne désactivez pas la validation de la demande, je suspecte que la demande est traitée à un niveau supérieur et rejetée du cadre MVC avec peut-être une erreur HTTP 500 – Lorenzo