在使用操作之前,我正在使用ActionFilter来确定用户是否可以访问特定资源,例如Account对象(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
答案 0 :(得分:38)
您可以使用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");
}