J'essaie d'en apprendre un peu plus sur MVC et j'ai rencontré un problème lors de l'utilisation de Ninject. Je souhaite lier des référentiels, mais continuez à recevoir l'erreur "Référence de l'objet non définie sur une instance d'un objet".ASP MVC 2 Ninject
J'ai créé mon NinjectControllerFactory:
public class NinjectControllerFactory : DefaultControllerFactory
{
// A Ninject "kernel" is the thing that can supply object instances
private IKernel kernel = new StandardKernel(new SportsShopServices());
// ASP .NET MVC calls this to get the controller for each request
protected override IController GetControllerInstance(RequestContext context, Type controllerType)
{
if (controllerType == null)
return null;
return (IController) kernel.Get(controllerType);
}
// Configure how abstract sevice types are mapped to concrete implementations
private class SportsShopServices : NinjectModule
{
public override void Load()
{
Bind<IProductRepository>().To<SqlProductsRepository>()
.WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString);
}
}
}
et mon contrôleur:
public class ProductsController : Controller
{
private IProductRepository productsRepository;
// Constructor used with Ninject
public ProductsController(IProductRepository _productsRepository)
{
this.productsRepository = _productsRepository;
}
public ViewResult List()
{
return View(productsRepository.Products.ToList());
}
}
J'ai modifié le fichier web.config pour fournir la chaîne de connexion db et le fichier Global.asax Application_Start () méthode à inclure:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
Je travaille sur un exemple e du livre PRO ASP .NET MVC 2 mais ne peut tout simplement pas obtenir ce travail, essayé toute la journée.
Avez-vous essayé re-construction? De plus, avez-vous la classe "SqlProductsRepository" dans votre solution? – donhack
Ouais essayé de reconstruire. SqlProductsRepository est là, son utilisé pour construire et retourner une table de produits de la base de données. – Apollo