asp.net jquery ajax webforms

Cómo verificar si la solicitud es ajax o no en codebehind-ASP.NET Webforms



jquery (5)

Probé el Request.IsAjaxRequest pero esto no existe en los formularios web. Estoy haciendo una llamada ajax JQuery. ¿Cómo verifico si esto es una solicitud ajax o no en C #?


Decora tu clase con la [WebMethod(EnableSession = true)] como si escribes la siguiente función en el código que está detrás y llamas a la misma función desde ajax call, estarás seguro.

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

en Ajax URL sea como URL :''/Codebehind.aspx/getData''


En general, deberá probar el encabezado X-Requested-With , asegurándose de que su valor sea ''XMLHttpRequest''. No soy un desarrollador de C # (todavía), pero una búsqueda rápida en Google dice que en C # dice algo como esto:

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


Intente verificar si el ScriptManager IsInAsyncPostBack :

ScriptManager.GetCurrent(Page).IsInAsyncPostBack


Podría crear su propio método de extensión como el del código MVC.

P.ej

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")); }

HTHs,
Charles

Editar: En realidad, las solicitudes de devolución de llamada también son solicitudes 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"); }


Sí, Request.IsAjaxRequest examina los encabezados y la cadena de consulta para X-Requested-With , pero parece que su jQuery no está enviando el encabezado X-Requested-With .

Puede probar y ver qué encabezados está enviando usando Fiddler, o alternativamente, simplemente envíelo en la cadena de consulta configurando la URL de POST en

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