Request.IsAjaxRequest renvoie false

J’ai un projet MVC dans lequel j’ai un formulaire avec un bouton d’envoi. J’ai ajouté un gestionnaire côté client jQuery qui intercepte l’événement de soumission de formulaire. La fonction javascript appelle la même action MVC qui aurait été appelée sans le javascript.

$("form[action ='/List/CreateItem']").submit( function() { $.post($(this).attr("action"), $(this).serialize(), function(response) { $("#results").html(response); }); return false; } ); 

Dans l’action MVC appelée, je teste Request.IsAjaxRequest pour décider de renvoyer une vue ou un résultat JSON. Mon problème est que Request.IsAjaxRequest renvoie false, même si je sais que l’appel est effectué à partir de la fonction jquery. (Je le sais parce que si je commente la ligne $ .post dans la fonction jquery et que je laisse juste la ligne false, rien ne se passe. Si je commente la ligne, l’action est exécutée, mais la vue est retournée car IsAjaxRequest est faux.)

Cette ligne doit-elle être à l’origine de Request.IsAjaxRequest?

La propriété Request.IsAjaxRequest doit refléter l’existence de l’en X-Requested-With tête HTTP X-Requested-With . Cet en-tête est-il réellement envoyé au serveur? Comme James le suggère, essayez de définir cela avec Fiddler ou des alternatives similaires au serveur proxy.

Eh bien … je m’excuse. Je ne sais pas ce qui a changé, mais maintenant IsAjaxRequest redevient vrai. Je compare le code que j’ai posté ci-dessus et ce qui est en cours d’exécution et je ne vois aucune différence. À plusieurs resockets, je me suis trompé à ce sujet auparavant et maintenant, je me répète à plusieurs resockets. Sûrement je manque quelque chose, mais je ne le vois pas.

Je ne suis pas sûr de connaître la différence, mais un moyen possible d’identifier s’il en existe une consiste à utiliser un outil de profilage HTTP tel que Fiddler (www.fiddlertool.com) et à rechercher les différences éventuelles entre les deux appels.

Est-ce que CreateItem effectue la redirection? See Firefox ne conserve pas les en-têtes personnalisés lors de la redirection de demande Ajax: une solution ASP.NET MVC