asp.net mvc 3 - ASP.NET MVC ActionFilter-Determine si la solicitud AJAX
asp.net-mvc-3 action-filter (1)
Estoy utilizando un ActionFilter para determinar si un usuario tiene acceso a un recurso específico, como un objeto de Cuenta (a la Rhino Security) antes de iniciar una acción. Este es un filtro global que redirige a una página de error si el valor de autorización falla
Estoy usando el siguiente código, que funciona bien para solicitudes de página completa:
filterContext.Controller.TempData["ErrorMessage"] = string.Format("You are not authorized to perform operation: {0}", operation);
filterContext.Result = new RedirectResult("~/Error/AuthorizationError");
Ajax solicita que no quiera aplicar una redirección, sino que devuelva un mensaje de error. ¿Hay alguna forma de saber dentro del filtro de acción si se trata de una solicitud AJAX o una solicitud de página completa regular (no estoy seguro de la terminología correcta)?
Gracias por adelantado
JP
Puedes usar el método de extensión 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");
}