我的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
}
感谢。
答案 0 :(得分:0)
您可以创建基类:
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
。