我正在寻找一种方法来强制仅通过 AJAX 请求访问 Controller 的操作。
在调用 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 的执行。
然后,您可以将其作为属性应用于 ActionMethods。
关于asp.net-mvc - ASP.NET MVC : Enforce AJAX request on an action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4168341/