我試圖將一些存儲庫綁定到子控制器,但我一直在獲取錯誤,NinjectControllerFactory'沒有返回名稱'足球'的控制器。綁定Ninject到子控制器 - 錯誤:沒有返回控制器
基本控制器:
public class TeamController<T> : Controller
{
protected readonly ITeamRepository<T> TeamRepository;
public TeamController(ITeamRepository<T> teamRepository)
{
TeamRepository = teamRepository;
}
public ViewResult Teams(string viewName, string masterName, object model)
{
return View("~/Views/Teams.aspx", TeamRepository.Team.ToList());
}
}
然後足球控制器:
public class SoccerController<T> : TeamController<T> where T : class
{
public SoccerController(ITeamRepository<T> teamRepository) : base(teamRepository)
{
}
}
Ninject:
public class NinjectControllerFactory : DefaultControllerFactory
{
private readonly IKernel _kernel = new StandardKernel(new MyService());
protected override IController GetControllerInstance(RequestContext context, Type controllerType)
{
if (controllerType == null) return null;
return (IController) _kernel.Get(controllerType);
}
private class MyService : NinjectModule
{
public override void Load()
{
Bind<ITeamRepository<SoccerTeam>>().To<TeamRepository<SoccerTeam>>()
.WhenInjectedInto(typeof(SoccerController<SoccerTeam>))
.WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString);
}
}
}
現在,當我打本地主機/足球/支球隊,我得到一個錯誤,指出NinjectControllerFactory沒有返回名爲'足球'的控制器。我錯過了什麼?
在此先感謝! 。
不知道我能做到這一點,因爲TeamRepository是一個基類嚴格鍵入... – keeg 2011-05-13 21:18:56
沒關係,我只需要使視圖通用,這將完全工作 – keeg 2011-05-13 21:52:16