Comment vérifier si la requête est ajax ou non dans codebehind – Webforms ASP.NET

J’ai essayé le Request.IsAjaxRequest mais cela n’existe pas dans WebForms. Je passe un appel JQuery ajax. Comment puis-je vérifier s’il s’agit d’une demande ajax ou non en C #?

Vous pouvez créer votre propre méthode d’extension, un peu comme celle du code MVC.

Par exemple

 public static bool IsAjaxRequest(this HttpRequest request) { if (request == null) { throw new ArgumentNullException("request"); } return (request["X-Requested-With"] == "XMLHttpRequest") || ((request.Headers != null) && (request.Headers["X-Requested-With"] == "XMLHttpRequest")); } 

HTH,
Charles

Edit: En réalité, les demandes de rappel sont également des demandes ajax,

  public static bool IsAjaxRequest(this HttpRequest request) { if (request == null) { throw new ArgumentNullException("request"); } var context = HttpContext.Current; var isCallbackRequest = false;// callback requests are ajax requests if (context != null && context.CurrentHandler != null && context.CurrentHandler is System.Web.UI.Page) { isCallbackRequest = ((System.Web.UI.Page)context.CurrentHandler).IsCallback; } return isCallbackRequest || (request["X-Requested-With"] == "XMLHttpRequest") || (request.Headers["X-Requested-With"] == "XMLHttpRequest"); } 

Essayez de vérifier si le ScriptManager IsInAsyncPostBack :

 ScriptManager.GetCurrent(Page).IsInAsyncPostBack 

En règle générale, vous devrez tester l’en X-Requested-With tête X-Requested-With , en vous assurant que sa valeur est ‘XMLHttpRequest’. Je ne suis pas encore un développeur C #, mais une recherche rapide dans Google indique qu’en C #, cela ressemble à ceci:

 Request.Headers["X-Requested-With"] == "XMLHttpRequest"; 

Oui, Request.IsAjaxRequest examine les en-têtes et la chaîne de requête pour X-Requested-With , mais il semble que votre jquery n’envoie pas l’en X-Requested-With tête X-Requested-With .

Vous pouvez essayer de voir quels en-têtes il envoie en utilisant Fiddler, ou simplement l’envoyer dans la chaîne de requête en définissant l’URL du POST sur

/whatever.aspx?x-requested-with=XMLHttpRequest

Décorez votre classe avec la syntaxe [WebMethod(EnableSession = true)] comme si vous écrivez la fonction suivante dans le code derrière et appelez la même fonction depuis un appel ajax, vous en serez sûr.

 [WebMethod(EnableSession = true)] public static void getData(ssortingng JSONFirstData,ssortingng JSONSecondData, ssortingng JSONThirdData, ssortingng JSONForthData, ...) { //code } 

dans Ajax, l’URL ressemble à l’ URL :'/Codebehind.aspx/getData'