小编典典

ASP.NET MVC:对操作强制执行A​​JAX请求

ajax

我正在寻找一种方法来强制执行仅通过AJAX请求访问的控制器操作。

调用action方法之前执行此操作的最佳方法是什么? 我想从我的动作方法中重构以下内容:

if(Request.IsAjaxRequest())
    // Do something
else
    // return an error of some sort

我设想的是ActionMethodSelectorAttribute可以像[AcceptVerbs]属性一样使用的。我没有创建这样的自定义属性的经验。


阅读 261

收藏
2020-07-26

共1个答案

小编典典

创建一个触发OnActionExecuting的ActionFilter

public class AjaxActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (!filterContext.HttpContext.Request.IsAjaxRequest())
            filterContext.Result = new RedirectResult(//path to error message);           
    }
}

设置过滤器的Result属性将阻止执行ActionMethod。

然后,您可以将其作为属性应用于ActionMethods。

2020-07-26