как узнать, является ли запрос ajax в asp.net mvc?


108

кто-нибудь, как я могу узнать, является ли запрос ajax? (Я использую jquery для ajax)


2
Вы также можете использовать Fiddler для просмотра запросов. Так вы многому научитесь.
CrazyDart 05

Ответы:


70

Все вызовы AJAX, выполняемые jQuery, будут иметь заголовок, указывающий, что это AJAX. Заголовок для проверки есть X-Requested-With, и значение будет, XMLHttpRequestкогда это вызов AJAX.

Обратите внимание, что запросы AJAX являются обычными GET или POST, поэтому, если вы (или ваша библиотека AJAX, например jQuery) не добавляете дополнительный заголовок в запрос, невозможно точно узнать, является ли это AJAX или нет.


3
@Omu: Request.Headers["X-Requested-With"]или подобное. Проверьте MSDN. Заголовки всегда связаны с запросами.
Роберт Коритник 05

179

Также существует проблема, Request.IsAjaxRequestесли вы используете более позднюю версию MVC. У меня больше нет версии 1, поэтому я не могу сказать, находится ли она в версии 1.

Если вам нужна эта проверка в Global.asax.cs, попробуйте следующее: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted Мне нужна эта проверка в Global.asax.cs, так что это мне не поможет
Ому

2
@BuildStarted недоступен в Application_Error
Ому

1
Да, ты прав. Это потому, что он находится вне MVC и не использует HttpRequestBase. В этом мне не было нужды, поэтому я не смотрел слишком глубоко. Спасибо за внимание.
Сборка началась

20
новый HttpRequestWrapper (Запрос) .IsAjaxRequest ();

1
Кстати: если вы находитесь внутри настраиваемого фильтра авторизации, используйте это, чтобы получить метод IsAjaxRequest по запросу: filterContext.HttpContext.Request.IsAjaxRequest
user1068352,

51

Это работает для меня в ASP.NET MVC 3

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

1
Это недоступно в Application_Error
ajbeaven

1
Это недоступно в Application_BeginRequest
Varadha31590

В Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.