Asp.net mvc 检查MVC5中的操作是否使用了另一个操作过滤器属性
我几乎没有像这样的自定义动作过滤器Asp.net mvc 检查MVC5中的操作是否使用了另一个操作过滤器属性,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-3,actionfilterattribute,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 3,Actionfilterattribute,我几乎没有像这样的自定义动作过滤器 public class CustomFilter:ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { //Some task } } 在我的行动方法中 [CustomFilter] [CustomFilterNew] public ActionResult Index() {
public class CustomFilter:ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//Some task
}
}
在我的行动方法中
[CustomFilter]
[CustomFilterNew]
public ActionResult Index()
{
return View();
}
让我们假设CustomFilterNew与CustomFilter正好相反
在这种情况下,如何防止一个筛选器操作执行另一个筛选器操作,让我们假设CustomFilterNew应禁止执行CustomFilter设置
filterContext。Result
属性为任何非空值将停止执行后续筛选器。因此,如果第一个筛选器设置了filterContext.Result=new RedirectResult(…)
,则第二个筛选器和操作方法将永远不会运行
有很多方法可以做到这一点,如下所示
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Result = new RedirectResult("~/Home/Index");
}
或
或
这里我必须提到的另一件事是如何设置过滤器工作的顺序
,您可以为操作过滤器提供顺序
,如下所示以按顺序执行过滤器
[FilterOne(Order = 1), FilterTwo(Order = 2)]
将filterContext.Result
属性设置为任何非空值将停止执行后续筛选器。因此,如果第一个筛选器设置了filterContext.Result=new RedirectResult(…)
,则第二个筛选器和操作方法将永远不会运行
有很多方法可以做到这一点,如下所示
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Result = new RedirectResult("~/Home/Index");
}
或
或
这里我必须提到的另一件事是如何设置过滤器工作的顺序
,您可以为操作过滤器提供顺序
,如下所示以按顺序执行过滤器
[FilterOne(Order = 1), FilterTwo(Order = 2)]
[FilterOne(Order = 1), FilterTwo(Order = 2)]