How to add base controller in asp.net mvc 6



我在asp.net mvc 6中搜索了基本控制器,但没有任何来源(据我所查)。那么,我如何在asp.net mvc中添加基本控制器,并在constructor方法上使用服务,或者在基本控制器或任何想法中创建新方法,以便使用类似基本控制器的东西呢?

任何帮助都将不胜感激。

谢谢。

您可以通过以下方式添加基本控制器:

public class BaseController : Controller
{
    public IService Service { get; }
    public BaseController(IService service)
    {
        Service = service;
    }
}

然后,您可以创建自己的控制器并继承BaseController而不是controller类。

public class NewController : BaseController
{
    public NewController(IService service) : base(service)
    {             
    }
    public IActionResult NewAction()
    {
        var result = Service.ServiceMethod();
    }
}

通过Microsoft.Extensions.DependencyInjection命名空间,我们可以访问以下扩展方法HttpContext.RequestServices.GetService

这是我们的BaseController类的源代码

public abstract class BaseController<T> : Controller where T : BaseController<T>
{
    private IService service;
    protected IService _service => telemetryInitializer ?? (telemetryInitializer = HttpContext.RequestServices.GetService<West.TelemetryService.ITelemetryHelper>());
}

OrderController类扩展了这个抽象的BaseController

public class OrderController : BaseController<OrderController>
{
    private readonly IOrderManager _orderManager;
    public OrderController(IOrderManager orderManager)
    {
        _orderManager = orderManager;
    }
    [HttpGet]
    public string Get()
    {
        Logger.LogInformation("Hello World!");
        return "Inside the Get method of OrderController";
    }
}

最新更新