在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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统