2011-03-27 79 views
1
class MyBaseController : AsyncController 
{ 
    // ... 
} 

class SimpleController : MyBaseController 
{ 
    public ActionResult MySyncAction() 
    { 
    } 
} 

总是必须做一两件事,OperationX()。这是ALL我的要求的长期操作。它的价值观基于很多东西而不同,但这是一个技术细节。基地分级同步控制器为异步控制器隐藏复杂

我想以异步方式做到这一点,然后以常规方式调用控制器的操作方法。我们在SimpleController世界中有大量的代码,并且我们有数百个控制器和路由等,所以它不会将所有代码转换为ASync。

的quesiton,因此,做我怎么拦截来MyBaseController的MySyncAction一个动作,然后调用MyBaseController的异步操作ALWAYS,然后只在完成后,在basecontroller异步操作的,做我然后调用MySyncAction SimplerController。

这是可能的,最好的方法是什么?

+0

我想我不能完全按照你的问题。你想在主要行动之前执行一些操作还是并行执行?如果它是一个“长期运营”,我想在主要行动之前运行是没有意义的,对吧?我认为在这种情况下,HttpHandler可能是您的一个选择,您是否考虑过? – bonifaz 2011-03-27 16:34:58

+0

之前的主要行动。主要行动是快速的,先前的行动是长期的行动。 – 2011-03-28 01:34:22

回答

0

如果您只想在BaseController之后调用SimpleController的MySyncAction,那么使用FilterAttribute代替它可以做到这一点吗?

这里是做一些记录自定义过滤器属性的例子... http://www.asp.net/mvc/tutorials/understanding-action-filters-cs

[MyFilterAttribute] 
class SimpleController : AsyncController 
{ 
    public ActionResult MySyncAction() 
    { 
    } 
}