Nesta aula iremos estudar como funciona as rotas no MVC C#, utilizaremos rotas para tradução de áreas do nosso website e criarmos exemplos de rotas com parâmetros.
As rotas é a maneira de escrevermos uma url amigável para o usuário, direcionando para os métodos da controller.
No Asp Net MVC, existe um arquivo de rotas chamado RoutesConfig.cs, dentro da pasta App_start do projeto. Pode ser que em outras versões, este arquivo esteja em outro local.
A rota padrão tem a seguinte estrutura:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
No exemplo acima, a rota default, ou seja, a primeira página do sistema que é rendereizada quando inicializamos, é a Index, que fica na controller Home.
Vamos customizar outras rotas, por exemplo, a rota contato:
Na primeira linha, criaremos uma key (chave), que não pode ser duplicada, chamada contato
Na segunda linha, será criada a rota que vamos abrir.
E, na terceira linha, criaremos o local que esta rota será direcionada e qual o método que será executado, que no nosso caso, irá para a HomeController e o método contact.
routes.MapRoute(
"contato",
"contato",
new { controller = "Home", action = "contact" }
);
namespace MVC_GerenciadorDeConteudo.Controllers
{
public class HomeController : Controller
{
public ActionResult Contact()
{
ViewBag.Message = "Your contact page."
return View();
}
}
}
No exemplo acima, será mostrada a url: http://localhost:52159/contato.
Se digitarmos na url o endereço: http://localhost:52159/about, será que funciona?
A resposta é sim, funciona,se tiver um método na HomeController chamado about. Se não tiver uma rota customizada, vai ser direcionado para rota padrão. Exemplo:
Por isso é importante a rota padrão ser declarada por último.
namespace MVC_GerenciadorDeConteudo.Controllers
{
public class HomeController : Controller
{
public ActionResult About()
{
ViewBag.Message = "Your contact page."
return View();
}
}
}
routes.MapRoute(
"sobre",
"sobre",
new { controller = "Home", action = "about" }
);
routes.MapRoute(
"contato",
"contato",
new { controller = "Home", action = "contact" }
);
//Esta é a rota padrão
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Vamos supor que precisamos editar um cadastro e temos que enviar o parâmetro id do cliente. Inserimos o parâmetro id na url e declaramos o padrão como id = 0. Exemplo:
routes.MapRoute(
"sobre_danilo_parametro",
"sobre/{id}/danilo",
new { controller = "Home", action = "about", id = 0 }
);
Nesta aula iremos estudar como funciona as rotas no MVC C#, utilizaremos rotas para tradução de áreas do nosso website e criarmos exemplos de rotas com parâmetros.
As rotas é a maneira de escrevermos uma url amigável para o usuário, direcionando para os métodos da controller.
No Asp Net MVC, existe um arquivo de rotas chamado RoutesConfig.cs, dentro da pasta App_start do projeto. Pode ser que em outras versões, este arquivo esteja em outro local.
A rota padrão tem a seguinte estrutura:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
No exemplo acima, a rota default, ou seja, a primeira página do sistema que é rendereizada quando inicializamos, é a Index, que fica na controller Home.
Vamos customizar outras rotas, por exemplo, a rota contato:
Na primeira linha, criaremos uma key (chave), que não pode ser duplicada, chamada contato
Na segunda linha, será criada a rota que vamos abrir.
E, na terceira linha, criaremos o local que esta rota será direcionada e qual o método que será executado, que no nosso caso, irá para a HomeController e o método contact.
routes.MapRoute(
"contato",
"contato",
new { controller = "Home", action = "contact" }
);
namespace MVC_GerenciadorDeConteudo.Controllers
{
public class HomeController : Controller
{
public ActionResult Contact()
{
ViewBag.Message = "Your contact page."
return View();
}
}
}
No exemplo acima, será mostrada a url: http://localhost:52159/contato.
Se digitarmos na url o endereço: http://localhost:52159/about, será que funciona?
A resposta é sim, funciona,se tiver um método na HomeController chamado about. Se não tiver uma rota customizada, vai ser direcionado para rota padrão. Exemplo:
Por isso é importante a rota padrão ser declarada por último.
namespace MVC_GerenciadorDeConteudo.Controllers
{
public class HomeController : Controller
{
public ActionResult About()
{
ViewBag.Message = "Your contact page."
return View();
}
}
}
routes.MapRoute(
"sobre",
"sobre",
new { controller = "Home", action = "about" }
);
routes.MapRoute(
"contato",
"contato",
new { controller = "Home", action = "contact" }
);
//Esta é a rota padrão
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Vamos supor que precisamos editar um cadastro e temos que enviar o parâmetro id do cliente. Inserimos o parâmetro id na url e declaramos o padrão como id = 0. Exemplo:
routes.MapRoute(
"sobre_danilo_parametro",
"sobre/{id}/danilo",
new { controller = "Home", action = "about", id = 0 }
);