我正在寻找一种方法来强制控制器的操作只能通过
AJAX请求进行访问.
在调用action方法之前,最好的方法是什么?我想从我的动作方法重构以下内容:
if(Request.IsAjaxRequest()) // Do something else // return an error of some sort
我设想的是一个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的执行.