我正在寻找一种方法来强制执行仅通过AJAX请求访问的控制器操作。
调用action方法之前执行此操作的最佳方法是什么? 我想从我的动作方法中重构以下内容:
if(Request.IsAjaxRequest()) // Do something else // return an error of some sort
我设想的是ActionMethodSelectorAttribute可以像[AcceptVerbs]属性一样使用的。我没有创建这样的自定义属性的经验。
ActionMethodSelectorAttribute
[AcceptVerbs]
创建一个触发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。