Убедитесь, что в SQL Server MVC используется сервер запросов URL-адресов.
есть ли способ определить, является ли запрос запросом ресурса Angular (1.1.5) $. Я очень ищу метод "Request.IsAjaxRequest()" для этого типа запроса.
Я рассматриваю это как в HandleUnauthorizedRequest избыточного авторизованного атрибута. Мне нужно установить результат контекста для некоторого json, если запрос Ajax или Angular или что-то еще, если нет.
Ответы
Ответ 1
Я плохо знаю MVC3, но вы можете настроить пользовательский заголовок для всех запросов от AngularJS.
Затем на стороне сервера вам просто нужно получить этот заголовок и сделать то, что вы хотите, с запросом от angular.
Чтобы пользовательский заголовок в AngularJS просто сделал это:
angular.module('myModule', [])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.common["FROM-ANGULAR"] = "true";
}])
Для использования X-Requested-With вы тоже должны это сделать:
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
Он больше не установлен по умолчанию, потому что большая часть сообщества должна удалить этот заголовок, чтобы включить запрос CORS
Ответ 2
Ответ на @Thomas Pons хороший и сделать AngularJS
запрос стандартным с настройками по умолчанию в Интернете. Но для большого приложения, с несколькими модулями angular, я считаю громоздким установить это для каждого модуля.
Не только это, но, возможно, вам нужно проверить, следует ли отвечать с ответом JSON вне запроса angular. В этом случае я предпочитаю проверять заголовок запроса Accept
:
var accepted = HttpContext.Request.Headers["Accept"].Split(',');
if (accepted .Any(x => x == "application/json"))
{
// Send your JsonResult here
}
else
{
// Send your Html/Content result here
}