没有给出的参数对应于BaseController所需的形式参数'context'

Kur*_*ula 1 c# asp.net asp.net-mvc asp.net-core-mvc

我有一个与Entity Framework交谈的基本控制器.我正在创建一个dbContext与基本控制器中的实体交谈.当我将我的家庭控制器继承到基本控制器时,它会抛出下面显示的错误.有关于此的任何指示?

错误信息:

严重级代码描述项目文件行抑制状态错误CS7036
没有给出对应于'BaseController.BaseController(ServiceContext)'Service\Controllers\HomeController.cs所需的形式参数'context'的参数

码:

public class BaseController : Controller
{
        ServiceContext _baseContext;

        public BaseController(ServiceContext context)
        {
            _baseContext = context;
        }
}
Run Code Online (Sandbox Code Playgroud)

HomeController继承自基本控制器.

public class HomeController : BaseController
{
    private readonly ServiceContext _context;

    public HomeController(ServiceContext context)
    {
        _context = context;
    }
}
Run Code Online (Sandbox Code Playgroud)

rah*_*dev 8

如果正确注射ServiceContextHomeController,它应该是这样的:

public class BaseController : Controller
    {
        protected readonly ServiceContext _baseContext;

        public BaseController(ServiceContext context)
        {
            _baseContext = context;
        }
}

public class HomeController : BaseController
        {
            public HomeController(ServiceContext context)
            :base(context)
            {

            }
    }
Run Code Online (Sandbox Code Playgroud)

此外,由于要访问ServiceContext来自HomeController故亦protected.也没有必要设置它HomeController


Ale*_*der 5

基类构造函数需要context参数。因此,您应该将一个传递给基类的构造函数:

public HomeController(ServiceContext context) : base(context)
{ }
Run Code Online (Sandbox Code Playgroud)