Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Mapeamento de controller

Pessoal, salve!

Eu ainda não entendi bem como que o ASP.NET Core faz para, implicitamente, reconhecer que Controller a aplicação deve chamar.

Se a gente chamar, por exemplo, por localhost:5000/pedido/carrosel, como que a aplicação vai saber que o /pedido é mapeado para o PedidoController, sendo que não colocamos nenhuma anotação ou coisa do tipo?

Teria como fazer com que o /pedido fosse mapeado para uma classe com nome totalmente diferente? (Sei que não é uma boa prática, é apenas por mérito de curiosidade)

Obrigado desde já!

2 respostas
solução!

Fala Fellipe blza, Geralmente projetos mvc no startup possui a seguinte codigo para configurar as rotas, ve se esse é seu caso.

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

{controller=Home} , mapeia  o nome do controlador, definindo como padrão o HomeController.
{action=Index} , mapeia o nome da ação, define como Index o action padrão.
{id?} id opcional. O ? em o torna {id?} opcional.

Por isso que no seu caso ele consegue saber que pedido/carrossel é a PedidoController e o metodo(ação) Carrossel.

Por exemplo se vc enviar uma url Produtos/items

Ele vai dar notfound ou outra msg de erro pq vc não tem um ProdutosController com um metodo(ação) items.

Obrigado demais, Hugo!