Asp.net mvc 4 从一个操作筛选器属性重定向到另一个操作筛选器属性
在我的MVC应用程序中,我有两个动作过滤器属性,我正在OnActionExecuting事件中做一些工作。根据第一个中的特定条件,我需要执行与第二个相同的代码块。所以我想重用代码 我的第一个问题,我能做到吗?那怎么办 第二,这是一个好办法吗 更新: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)
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
。你可以发布一个你所做的代码示例吗?“因为不清楚。”托马斯谢谢你的回答。用代码块更新。