Подтвердить что ты не робот

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

4b9b3361

Ответ 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");
}