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.
Pourquoi voudriez-vous faire un contrôleur sans le suffixe? Voilà comment fonctionne le cadre. – Jesse
Oui, vous pouvez. Mais comme @jesse je suis curieux de savoir pourquoi vous voulez faire cela? – devundef
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. –