scottrakes
scottrakes

Reputation: 735

MVC Base Controller and Ninject

I am implementing Ninject dependency injection in an existing MVC 2 application that uses a base controller that all controllers inherit to set navigation and other information needed by the master page. When I set a controller to inherit from the base controller, I get the following error: "...BaseController' does not contain a constructor that takes 0 arguments. How do I get around this error? I am new to Ninject and can't figure this out.

public class BaseController : Controller
    {
        private INavigationRepository navigationRepository;
        private ISessionService sessionService;


        public BaseController(INavigationRepository navigationRepository, IMembershipService membershipService, ISessionService sessionService)
        {
            this.navigationRepository = navigationRepository;
            this.sessionService = sessionService;
        }
    }


 public class HomeController: BaseController
    { ... }

Upvotes: 6

Views: 1884

Answers (1)

dotjoe
dotjoe

Reputation: 26940

Adding that ctor is one way

public class HomeController: BaseController
{
    public HomeController(INavigationRepository navigationRepository, IMembershipService membershipService, ISessionService sessionService)
    : base(navigationRepository, membershipService, sessionService) { }

}

or property injection

public class BaseController : Controller
{
    [Inject]
    public INavigationRepository navigationRepository { get; set; }
    [Inject]
    public ISessionService sessionService { get; set; }


}

Upvotes: 6

Related Questions