como saber se o pedido é ajax em asp.net mvc?


108

alguem como posso saber se o pedido é ajax? (Estou usando jquery para ajax)


2
Você também pode usar o Fiddler para monitorar as solicitações. Você aprenderá muito fazendo isso.
CrazyDart

Respostas:


70

Todas as chamadas AJAX feitas por jQuery terão um cabeçalho adicionado para indicar que é AJAX. O cabeçalho a ser verificado é X-Requested-Withe o valor será XMLHttpRequestquando for uma chamada AJAX.

Observe que as solicitações AJAX são GETs ou POSTs normais, portanto, a menos que você (ou sua biblioteca AJAX como jQuery) esteja adicionando um cabeçalho adicional na solicitação, não há como saber com certeza se é AJAX ou não.


3
@Omu: Request.Headers["X-Requested-With"]ou semelhante. Verifique o MSDN. Os cabeçalhos estão sempre relacionados a solicitações.
Robert Koritnik

179

Também existe o Request.IsAjaxRequestse você estiver usando uma versão posterior do MVC. Não tenho mais a versão 1, então não posso dizer se ela está na versão 1.

Se você precisar disso, verifique em Global.asax.cs, tente o seguinte: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted Eu preciso dessa verificação em Global.asax.cs, então isso não vai me ajudar
Omu

2
@BuildStarted não está disponível em Application_Error
Omu

1
Sim você está certo. É porque está fora do MVC e não utiliza HttpRequestBase. Eu não tinha necessidade disso, então não olhei muito profundamente. Obrigado pelo aviso.
Buildstarted

20
new HttpRequestWrapper (Request) .IsAjaxRequest ();

1
BTW: se você estiver dentro do filtro de autorização personalizado, use isso para obter o método IsAjaxRequest na solicitação: filterContext.HttpContext.Request.IsAjaxRequest
user1068352

51

Funciona para mim na ASP.NET MVC 3

if (Request.IsAjaxRequest())
{
     // ajax request handled
}

1
Não disponível em Application_Error
ajbeaven

1
Isso não está disponível em Application_BeginRequest
Varadha31590

Em Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.