MVC Framework - Routing Engine
O Roteamento ASP.NET MVC permite o uso de URLs que são descritivos das ações do usuário e são mais facilmente compreendidos pelos usuários. Ao mesmo tempo, o Roteamento pode ser usado para ocultar dados que não se destinam a serem exibidos ao usuário final.
Por exemplo, em um aplicativo que não usa roteamento, o usuário verá a URL como http: //myapplication/Users.aspx? Id = 1, que corresponderia ao arquivo Users.aspx dentro do caminho de myapplication e envio de ID como 1 Geralmente, não gostaríamos de mostrar esses nomes de arquivo ao usuário final.
Para lidar com URLs MVC, a plataforma ASP.NET usa o sistema de roteamento, que permite criar qualquer padrão de URLs que desejar e expressá-los de maneira clara e concisa. Cada rota em MVC contém um padrão de URL específico. Este padrão de URL é comparado ao URL de solicitação de entrada e se a URL corresponder a esse padrão, ele será usado pelo mecanismo de roteamento para processar a solicitação.
Formato de URL de roteamento MVC
Para entender o roteamento MVC, considere o seguinte URL -
http://servername/Products/Phones
No URL acima, Produtos é o primeiro segmento e Telefone é o segundo segmento, que pode ser expresso no seguinte formato -
{controller}/{action}
A estrutura MVC considera automaticamente o primeiro segmento como o nome do Controlador e o segundo segmento como uma das ações dentro desse Controlador.
Note- Se o nome do seu controlador for ProductsController, você só mencionaria Produtos na URL de roteamento. A estrutura MVC entende automaticamente o sufixo do controlador.
Crie uma rota simples
As rotas são definidas no arquivo RouteConfig.cs que está presente na pasta do projeto App_Start.
Você verá o seguinte código dentro deste arquivo -
public class RouteConfig {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
}
}
Este método RegisterRoutes é chamado pelo Global.ascx quando o aplicativo é iniciado. O método Application_Start em Global.ascx chama esta função MapRoute que define o Controller padrão e sua ação (método dentro da classe Controller).
Para modificar o mapeamento padrão acima conforme nosso exemplo, altere a seguinte linha de código -
defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }
Esta configuração escolherá o ProductsController e chamará o método Phone dentro dele. Da mesma forma, se você tiver outro método, como Eletrônicos dentro de ProductsController, o URL para ele seria -
http://servername/Products/Electronics