Maproute com controlador genérico
-
23-09-2019 - |
Pergunta
É possível mapear uma rota com MapRoute e especificar um controlador genérico, por exemplo,
context.MapRoute(
"Dashboard_Edit", // Route name
"dashboard/edit/{*pagePath}",
new { controller = "Dashboard`1", action = "edit", pagePath = "home" }
);
Solução
Infelizmente, não é permitido com a fábrica de controladores padrão. O tipo "Dashboard`1" é para um tipo genérico aberto e não pode ser construído. Em outras palavras, com a fábrica de controladores padrão, os únicos valores permitidos para "controlador" são aqueles que podem se encaixar na seguinte sintaxe da pseudo:
IController c = new SomeControllerType();
o SomeControllerType
Deve ser válido (embora sem o sufixo ou espaço para nome do "controlador") e deva ter um construtor sem parâmetros.
Você sempre pode escrever uma fábrica de controladores personalizados que possui funcionalidade mais avançada e entenda como construir tipos genéricos.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow