2012-07-11 1 views
1

Dans ASP.NET MVC, comment pouvons-nous créer des classes de contrôleur sans utiliser le suffixe «controller»? Je n'ai pas trouvé de solution sur le web. La documentation MSDN indique qu'un nom de classe de contrôleur doit se terminer par "controller".Classe de contrôleur personnalisé ASP.NET MVC

Un expert peut-il m'aider?

Merci.

Jerry

+2

Pourquoi voudriez-vous faire un contrôleur sans le suffixe? Voilà comment fonctionne le cadre. – Jesse

+0

Oui, vous pouvez. Mais comme @jesse je suis curieux de savoir pourquoi vous voulez faire cela? – devundef

+0

Bien que cela puisse être fait, cela vous met plus de poids si vous le faites. Les cadres sont conçus pour améliorer la productivité en suivant un plan défini. Si vous voulez vous écarter de ce plan de manière significative, il est inutile d'utiliser le framework en premier lieu. –

Répondre

2

Vous devez utiliser une usine de contrôleur personnalisé en héritant le DefaultControllerFactory et remplacer la méthode GetControllerType.

// instantiate controllers that doesn't have "Controller" suffix. 
public class CustomControllerFactory: DefaultControllerFactory 
{ 
    protected override Type GetControllerType(System.Web.Routing.RequestContext requestContext, string controllerName) 
    { 
     var controllersNs = "MvcApp.Controllers"; 
     return Type.GetType(string.Format("{0}.{1}", controllersNs, controllerName)); 
    } 
} 

Et vous devez enregistrer cette usine de contrôleur dans Global.asax.cs.

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

Important: Le DefaultControllerFactory fait plus de travail pour améliorer les performances en mettant en cache les types et d'autres choses, vous devez regarder dans le source code pour obtenir une meilleure idée.

+0

Merci à tous pour les réponses. Je suis juste curieux de voir comment MVC a travaillé en interne. Chaque fois que je dois m'assurer que ma classe de contrôleur a le suffixe «controller» dedans. Basé sur le lien fourni par la réponse, je sais comment cela fonctionne maintenant. –

Questions connexes