You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework升级.NET Core:如何从ControllerContext获取Controller

.NET Core中获取当前控制器实例的替代方案

在.NET Core中,ControllerContext确实不再提供.Controller属性,想要获取当前控制器对象可以用以下两种方法:

  • 通过HttpContext直接获取实例
    ASP.NET Core会将当前控制器实例存入HttpContext.Items集合,键为typeof(ControllerBase),代码示例:

    var baseController = HttpContext.Items[typeof(ControllerBase)] as Controllers.BaseController;
    
  • 在初始化时手动传入控制器实例
    如果你的BaseModel由控制器创建,直接在实例化BaseModel时把当前控制器对象传进去,这种方式更可控,也更符合依赖注入的设计思想:

    // 控制器中的代码
    var model = new BaseModel(this);
    
    // BaseModel类的定义
    public class BaseModel
    {
        private readonly Controllers.BaseController _controller;
    
        public BaseModel(Controllers.BaseController controller)
        {
            _controller = controller;
        }
    }
    

需要注意的是,第一种方法依赖框架内部的存储逻辑,虽然当前版本稳定,但后续框架更新可能存在变更风险;第二种方法属于显式传递,耦合度更低,是更推荐的实现方式。

内容的提问来源于stack exchange,提问作者Bad Dub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:30:54