2010-09-15 16 views
2

Ce doit être une question triviale pour certains, mais je n'ai trouvé aucune information réelle à ce sujet.Comment indiquer à ASP.NET MVC de rechercher des contrôleurs dans une bibliothèque?

J'ai une application Web ASP.NET MVC. Comme j'aime écrire du code réutilisable, j'aimerais placer mes contrôleurs dans un assemblage de bibliothèque distinct et les réutiliser dans plusieurs applications Web.

La question est, comment puis-je dire à ASP.NET MVC qu'il devrait rechercher des contrôleurs dans l'autre assembly au lieu de l'application Web elle-même?

Répondre

3

Vous devez créer votre propre ControllerFactory.

Découvrez this lien

Fondamentalement, créez le ControllerFactory comme décrit ci-dessus, dans votre Global.asax, ajoutez cette ligne:

ControllerBuilder.Current.SetControllerFactory(new YourFactory()); 

qui indique ASP.NET MVC d'utiliser votre ControllerFactory.

Le botteur est lorsque vous définissez vos itinéraires, vous devez donner ASP.NET MVC un « soupçon » à cette assemblée où se trouve:

yourRoute.DataTokens = new RouteValueDictionary(
    new 
    { 
     namespaces = new[] { "SomeAssembly.Controllers" } 
    }); 

S'il ne marche pas trouver, il regarde dans l'espace de noms normal (application Web).

Here est un autre lien montrant comment créer une fabrique de contrôleur personnalisé.

Bonne chance!

+0

Merci, c'est exactement ce que je cherchais. En fait, spécifier simplement l'espace de noms dans lequel résident mes contrôleurs était suffisant pour faire l'affaire! – Venemo

+0

Cool. Je n'ai jamais essayé toute la question de l'espace de noms, mais j'utilise actuellement des fabriques de contrôleurs pour l'injection de dépendances. Content que ça a marché. – RPM1984