代码之家  ›  专栏  ›  技术社区  ›  Remus

ASP.NET MVC:对操作强制AJAX请求

  •  11
  • Remus  · 技术社区  · 14 年前

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

    在调用action方法之前,最好的方法是什么?

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

    我的设想是 ActionMethodSelectorAttribute 可以像 [AcceptVerbs] 属性。不过,我没有经验培养出这样的习惯。

    2 回复  |  直到 14 年前
        1
  •  17
  •   Dawid Kowalski    13 年前

    创建触发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。

        2
  •  2
  •   John Farrell    14 年前

    public class AjaxOnly : ActionMethodSelectorAttribute
    {
        public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
        {
            return controllerContext.HttpContext.IsAjaxRequest();
        }
    }
    

    我只是忘记了IsAjaxRequest()是从哪里来的,我粘贴的是我的代码,但是“丢失”了那个方法。;)

    推荐文章