ASP.NET MVC ActionFilter - определить, требуется ли запрос AJAX
Я использую ActionFilter, чтобы определить, имеет ли пользователь доступ к определенному ресурсу, такому как объект Account (a la Rhino Security), перед тем как нажать на действие. Это глобальный фильтр, который перенаправляется на страницу с ошибкой, если значение авторизации завершается ошибкой
Я использую следующий код, который отлично подходит для полных запросов страницы:
filterContext.Controller.TempData["ErrorMessage"] = string.Format("You are not authorized to perform operation: {0}", operation);
filterContext.Result = new RedirectResult("~/Error/AuthorizationError");
Запросы Ajax Я не хочу применять перенаправление, а скорее возвращать сообщение об ошибке. Есть ли способ сказать внутри фильтра действий, если это запрос AJAX или регулярная полная страница (извините, не уверены в правильной терминологии)?
Заранее спасибо
В JP
Ответы
Ответ 1
Вы можете использовать метод расширения IsAjaxRequest:
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
// it was an AJAX request
...
}
else
{
// it was a standard request
filterContext.Controller.TempData["ErrorMessage"] = string.Format("You are not authorized to perform operation: {0}", operation);
filterContext.Result = new RedirectResult("~/Error/AuthorizationError");
}