Request.IsAjaxRequest возвращает false - PullRequest
4 голосов
/ 09 ноября 2009

У меня есть проект MVC, в котором у меня есть форма с кнопкой отправки. Я добавил клиентский обработчик jquery, который перехватывает событие отправки формы. Функция javascript вызывает то же действие MVC, которое было бы вызвано без javascript.

 $("form[action ='/List/CreateItem']").submit(
            function() {
                $.post($(this).attr("action"), $(this).serialize(), function(response) { $("#results").html(response); });
                return false;
            }
            );

В вызываемом MVC-действии я проверяю Request.IsAjaxRequest, чтобы решить, следует ли возвращать представление или результат JSON. Моя проблема заключается в том, что Request.IsAjaxRequest возвращает false, хотя я знаю, что вызов выполняется из функции jquery. (Я знаю это, потому что если я закомментирую строку $ .post в функции jquery и просто оставлю возвращаемую ложную строку, ничего не произойдет. Если я откомментирую строку, действие будет выполнено - но оно возвращает представление, потому что IsAjaxRequest ложь.)

Должна ли эта строка приводить к истинности значения Request.IsAjaxRequest?

Ответы [ 4 ]

3 голосов
/ 09 ноября 2009

Свойство Request.IsAjaxRequest должно отражать существование HTTP-заголовка X-Requested-With. Этот заголовок действительно отправляется на сервер? Как предлагает Джеймс, попробуйте профилировать это с Fiddler или подобными альтернативами прокси-сервера.

1 голос
/ 09 ноября 2009

Ну ... извиняюсь. Я не знаю, что изменилось, но теперь IsAjaxRequest возвращает true. Я сравниваю код, который я разместил выше, и то, что выполняется сейчас, и я не вижу разницы. Я неоднократно ошибался в этом раньше, и теперь я неоднократно становился правдой. Конечно, я что-то упускаю, но я этого не вижу.

0 голосов
/ 09 ноября 2009
0 голосов
/ 09 ноября 2009

Я не уверен, в чем разница, но возможный способ определить, есть ли такой, - использовать инструмент профилирования HTTP, такой как Fiddler (www.fiddlertool.com), и искать возможные различия между двумя вызовами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...