为什么ASP.NET MVC3中的所有依赖项注入都发生在控制器级别而不是动作级别。通常会覆盖控制器创建,以便在实例化控制器时注入依赖项。但是,控制器仅作为请求操作的结果进行实例化。为什么不在动作级别处理依赖注入?
答案 0 :(得分:4)
因为这是一个已知的模式,并且钩子在MVC中就位以注入控制器,而不是动作。有控制器因素,但不是动作工厂。您创建控制器的实例,而不是方法,因此需要进行注入。
另外还有一种已知的构造函数注入模式,这种模式比其他方法(即action方法)注入更合适,并且它还允许构造函数中可能需要的任何其他设置。
答案 1 :(得分:1)
您可以使用模型绑定作为排序的操作方法注入器。以下是您可以阅读的模型粘合剂的一些介绍:
http://www.singingeels.com/Articles/Model_Binders_in_ASPNET_MVC.aspx
您可以通过这种方式实例化并将存储库或任何您想要的操作方法传递给操作方法,并且它可以重复使用。
答案 2 :(得分:0)
我的猜测是,你正在主持一个拥有10个家属的GOD控制器和许多行动,并想知道如何做得更好?
记住!控制器应该瘦> 并包含少数操作。我更喜欢我的控制器每个HTTP方法只有一个动作。