Powiązanie Ninject z ogólnym repozytorium MVC zwraca błąd na konstruktorze bez parametrów

Próbuję użyć dość prostego repozytorium ogólnego dla wielu list administracyjnych w aplikacji. Funkcjonalnością dla administratorów jest po prostu CRUD, aby listy były aktualne do wykorzystania w innych miejscach jako odnośniki.

Wciąż dostaję błąd w formie:

Wystąpił błąd podczas próby utworzenia kontrolera typu „WhatWorks.Controllers.AchievementController”. Upewnij się, że kontroler ma publiczny konstruktor bez parametrów.

Przeczytałem bardzo dużo postów na SO i blogach znalezionych przez Google, ale nie mogę znaleźć odpowiedzi (przynajmniej nic, co miałoby dla mnie sens jako odpowiedź, która może być kolejnym problemem ...)

Mój kod jest następujący:

Kontroler

public class AchievementController : BootstrapBaseController
{
    private readonly IAdminRepository<tAchievement> _repo;

    public AchievementController(IAdminRepository<tAchievement> _repo)
    {
        this._repo = _repo;
    }

ViewModel

public partial class AchievementListViewModel
{
    public int Id { get; set; }
    public string achievement { get; set; }
}

Berło

public interface IAdminRepository<TEntity> : IDisposable 
                    where TEntity : class                            
{
    IEnumerable<TEntity> Get();
    TEntity GetByID(int id);
    void Insert(TEntity entity);
    void Delete(TEntity entity);
    void Update(TEntity entity);
    void Save();
}

Magazyn

public class AdminRepository<T> : IAdminRepository<T>
                        where T : class
    {
        private WhatWorksEntities objContext;

        public AdminRepository()
        {
            objContext = new WhatWorksEntities();
        }

        public IEnumerable<T> Get()
        {
            return objContext.Set<T>().ToList();
        }

        etc.

Wiążący

kernel.Bind(typeof(IAdminRepository<>)).To(typeof(AdminRepository<>));

Próbowałem również powiązać z dodatkową linią bez efektu:

kernel.Bind<IAdminRepository<tAchievement>>().To<AdminRepository<tAchievement>>();

Zakładam, że brakuje mi czegoś prostego.

W moich referencjach mam Ninject, Ninject.Web.MVC i Ninject.Web.Common - wszystkie zaczerpnięte z NuGet.

Śledzenie stosu jest następujące:

[MissingMethodException: No parameterless constructor defined for this object.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +113
   System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +232
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +83
   System.Activator.CreateInstance(Type type) +6
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +55

[InvalidOperationException: An error occurred when trying to create a controller of type 'WhatWorks.Controllers.AchievementController'. Make sure that the controller has a parameterless public constructor.]
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +179
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +74
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +197
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +49
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +50
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +301
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

_____________EDIT z częściową odpowiedzią ______

Po odtworzeniu projektu od podstaw i popełnieniu tego samego błędu zauważyłem, że zmieniły się wersje kilku dodatkowych pakietów, z których korzystałem. Używam „Twitter Bootstrap for MVC” Erica Hextera jako mojego głównego wyświetlacza, a to pociąga za sobą późniejszą wersję Twitter Bootstrap niż wcześniej. Nie jestem pewien, czy to powoduje problem, ale układ folderów w starszym projekcie roboczym różni się od nowego.

Ta odpowiedź dała mi przyzwoity wskaźnik po komentarzach Trevora Pilleya:Ninject + MVC3 nie wprowadza do kontrolera

W moim starszym projekcie roboczym poniższy plik znajdował się w pliku Web.config, ale nie ma go w nowym projekcie. Jeśli go dodam, kod działa, ale nadal występuje problem z układem Bootstrap Twittera - prawdopodobnie z nowych plików .css - pozostawiam to pytanie otwarte na wypadek, gdyby ktoś mógł poprawić to jako odpowiedź.

(Tag zamykający Entity Framework pozostawiony, aby pokazać lokalizację w Web.config)

  </entityFramework>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

_________EDIT global.asax ______________________

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BootstrapSupport.BootstrapBundleConfig.RegisterBundles(System.Web.Optimization.BundleTable.Bundles);
        WhatWorksRouteConfig.RegisterRoutes(RouteTable.Routes);
        AutoMapperConfiguration.Configure();
    }
}

questionAnswers(1)

yourAnswerToTheQuestion