MapRoute avec le contrôleur générique
-
23-09-2019 - |
Question
Est-il possible de mapper un itinéraire avec MapRoute et spécifier un contrôleur générique par exemple
context.MapRoute(
"Dashboard_Edit", // Route name
"dashboard/edit/{*pagePath}",
new { controller = "Dashboard`1", action = "edit", pagePath = "home" }
);
La solution
Il est malheureusement pas permis à l'usine de contrôleur par défaut. Le type « Dashboard`1 » est un type générique ouvert et ne peut pas être construit. En d'autres termes, avec l'usine de contrôleur par défaut les seules valeurs autorisées pour « contrôleur » sont ceux qui peuvent convenir à la syntaxe pseudo suivante:
IController c = new SomeControllerType();
Le SomeControllerType
doit être valide (mais sans le suffixe « Controller » ou espace de noms), et il doit avoir un constructeur sans paramètre.
Vous pouvez toujours écrire une usine de contrôleur personnalisé qui a des fonctionnalités plus avancées et comprend comment construire des types génériques.