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