在ASP.NET Core MVC中预设在DI过程中使用了AddMvc()
注入MVC服务,透过DI可以在Controller建构子中引用其他DI过的物件,但预设是无法引入其他的Controller实例的,本文将说明如何在Controller中使用其他Controller实例。
补充DI项目
找到Startup.cs
的ConfigureServices
方法编辑以下项目。
public void ConfigureServices(IServiceCollection services) { // ...something... services.AddMvc() .AddControllersAsServices(); // 加入這個項目將Controller也作為DI項目 // ...something... }
在Controller使用
开启要使用其他Controller的Controller,并在建构子加入DI项目。如此就可以在Action中使用其他Controller的Action。
public partial class ThisController : Controller { OtherController OtherController { get; set; } public ThisController( OtherController otherController, // 在建構子使用其他Controller實例 // ...something parameters.... ) { OtherController = otherController; } }
有关详细的原理说明可以参考这篇文章。
来自:https://www.dazhuanlan.com/2020/03/19/5e736d1cdffe3/