ASP.NET MVC:在操作上执行AJAX请求
-
09-10-2019 - |
题
我正在寻找一种仅通过AJAX请求访问控制器的操作的方法。
在调用动作方法之前,最好的方法是什么? 我想从我的动作方法中重构以下内容:
if(Request.IsAjaxRequest())
// Do something
else
// return an error of some sort
我想象的是 ActionMethodSelectorAttribute
可以像 [AcceptVerbs]
属性。不过,我没有经验来定制属性。
解决方案
创建一个触发Onationexecuting的动作窗口
public class AjaxActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.HttpContext.Request.IsAjaxRequest())
filterContext.Result = new RedirectResult(//path to error message);
}
}
设置过滤器的结果属性将阻止执行ActionMethod。
然后,您可以将其作为属性应用于您的ActionMethods。
其他提示
它很简单:
public class AjaxOnly : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
return controllerContext.HttpContext.IsAjaxRequest();
}
}
我只是忘记了isajaxrequest()来自哪里,我从我的代码中粘贴了,但“丢失”了这种方法。 )
不隶属于 StackOverflow