Je reçois ce qui précède lorsque j'essaie d'ouvrir une vue dans un contrôleur dans une zone. Ninject est configuré comme suit:IControllerFactory 'MyWebSite.WebUI.Infrastructure.NinjectControllerFactory' n'a pas renvoyé de contrôleur pour le nom 'Admin'
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel kernel = new StandardKernel(new RLSBCWebSiteServices());
protected override IController GetControllerInstance(RequestContext context, Type controllerType)
{
if (controllerType == null)
return null;
return (IController)kernel.Get(controllerType);
}
private class MyWebSiteServices : NinjectModule
{
public override void Load()
{
Bind<IMatchesRepository>().To<SqlMatchesRepository>().WithConstructorArgument("connectionString",
ConfigurationManager.ConnectionStrings["MyWebSiteDb"].ConnectionString);
}
}
}
Si je place un point d'arrêt dans le code, je vois le contexte de RequestContext contient les valeurs suivantes:
context.RouteData.DataTokens.Values[0] = “MyWebSite.WebUI.Areas.Visitor” context.RouteData.DataTokens.Values[1] = “Visitor” which is the Area
context.RouteData.Values.Values[0] = “admin” which is the Controller
context.RouteData.Values.Values[1] = “register” which is the View
Cependant controllerType == null, à la place sur le contrôleur prénom.
Ce transfert vers la nouvelle page est déclenchée par
Html.ActionLink("here", "Register", "Admin", new { area = "Visitor" }, null)
qui se trouve sur la page de connexion. Cependant, la même chose se produit si j'entre
http://example.com/Visitor/admin/register
dans IE8
L'enregistrement de la zone est comme suit:
public class VisitorAreaRegistration : AreaRegistration
{
public override string AreaName { get { return "Visitor"; } }
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Visitor_default",
"Visitor/{controller}/{action}/{id}",
new { controller = "Admin", action = "Register", id = UrlParameter.Optional }
);
}
}
Quelqu'un at-il réussi à obtenir les zones de travail avec NinjectControllerFactory, ou est-il quelque chose de mal avec ma configuration?
J'ai regardé ceci quand j'ai téléchargé Ninject en premier lieu, mais je pensais que le .dll que j'ai utilisé était la version compilée de ceci. Donc, j'ai maintenant téléchargé cette version, mais les documents sont très clairsemés. S'il y avait quelque chose que vous pourriez suggérer qui m'aiderait à mettre les choses en place? – xiecs
Jetez un coup d'œil à l'exemple d'application. Cela vient avec le code source –
J'ai téléchargé la source, l'ai installé et affiché avec succès le site Web de Ninject. En regardant à travers la source, c'est beaucoup plus compliqué que je ne le veux, avec Spark, Elmah, Newtonsoft etc. Beaucoup de choses sont au dessus de moi. Je remarque que vous n'utilisez pas les zones dans votre site Web. J'ai également jeté un coup d'oeil à JavascriptRouteGenerator.cs. Il semble n'y avoir rien là-dedans qui suggérerait qu'il gère les zones. J'ai fait quelques changements basés sur le code source, qui sont trop gros pour être listés ici. Je reçois toujours un message d'erreur disant qu'il ne peut pas trouver l'URL demandée. – xiecs