Asp.net mvc 4 从一个操作筛选器属性重定向到另一个操作筛选器属性

Asp.net mvc 4 从一个操作筛选器属性重定向到另一个操作筛选器属性,asp.net-mvc-4,actionfilterattribute,Asp.net Mvc 4,Actionfilterattribute,在我的MVC应用程序中,我有两个动作过滤器属性,我正在OnActionExecuting事件中做一些工作。根据第一个中的特定条件,我需要执行与第二个相同的代码块。所以我想重用代码 我的第一个问题,我能做到吗?那怎么办 第二,这是一个好办法吗 更新: public class Primary : ActionFilterAttribute{ public override void OnActionExecuting(ActionExecutingContext filterContext)

在我的MVC应用程序中,我有两个动作过滤器属性,我正在OnActionExecuting事件中做一些工作。根据第一个中的特定条件,我需要执行与第二个相同的代码块。所以我想重用代码

我的第一个问题,我能做到吗?那怎么办

第二,这是一个好办法吗

更新:

public class Primary : ActionFilterAttribute{
   public override void OnActionExecuting(ActionExecutingContext filterContext){
      if(there is no cookie){
          // Code
      }
      else{
          // Execute the same code block as Secondary OnActionExecuting
      }
   }
}

public class Secondary : ActionFilterAttribute{
   public override void OnActionExecuting(ActionExecutingContext filterContext){
       // Access cookie and do other work
   }
}

[Primary]
public ActionResult MyPrimaryAction(Guid id){
    // Do work
}

[Secondary]
public ActionResult MySecondaryAction(Guid id){
    // Do work
}

谢谢。

您可以创建一个基类:

public class BaseCookieAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext){
       // Access cookie and do other work
   }
}
然后更新两个属性类:

public class Primary : BaseCookieAttribute {
   public override void OnActionExecuting(ActionExecutingContext filterContext){
      if(there is no cookie){
          // Code
      }
      else{
          base.OnActionExecuting(filterContext);
      }
   }
}

那么你就不需要第二个属性了,因为你可以直接在你的动作方法上使用
BaseCookieAttribute

你可以发布一个你所做的代码示例吗?“因为不清楚。”托马斯谢谢你的回答。用代码块更新。