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

108

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

Omu
fonte
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.

RedFilter
fonte
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()

Buildstarted
fonte
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
}
Piotr Czyż
fonte
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