No ASP.NET tradicional nós podemos utilizar a instrução chamada QueryString para obter uma coleção de variáveis de string de consulta HTTP. Nas variáveis de cadeia de consulta enviada pelo cliente, as chaves e valores são descodificados na URL. Isto quer dizer que QueryString retorna os valores dos clássicos parâmetros usados na URL que utilizamos para consultas HTTP. No ASP.NET MVC não precisamos utilizar a instrução QueryString para obter os valores dos parâmetros em uma pesquisa, podemos defini-los diretamente na rota da URL e utiliza-los diretamente na ação do controlador.
Você utiliza o MapRoute para mapear suas rotas, esse membro é um membro sobrecarregado. Para obter informações completas sobre esse membro, incluindo sintaxe, uso e exemplos, clique em um nome na lista de sobrecarga encontrada no link abaixo.
MapRoute: Mapeamento de Rotas
Utilizando Parâmetros nas Rotas
1 – Crie um novo projeto ASP.NET MVC utilizando o Template padrão e rode sua aplicação. Volte para o Visual Studio e no arquivo de rotas crie uma nova rota, e defina o parâmetro chamado linguagem, defina o controlador e sua ação de resultado. Crie um novo controlador chamado ProgramasController.cs e preencha sua ação, utilize o código abaixo em seus respectivos arquivos.
2 – Você pode digitar o nome do seu controlador para acionar a rota e exibir a mensagem ao usuário:
3 – Você pode adicionar um parâmetro na URL no qual criamos anteriormente, a ação executara a QueryString automaticamente, e reconhecerá o parâmetros utilizado e o retornará para que seja exibido na página.
Exemplo:
Neste exemplo utilizamos o parâmetro da rota e o recuperamos na ação de resultado do controlador.
C#
RouteConfig.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MeuMVC { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // Cria uma nova rota para o controlador // Define controlador e parâmetros routes.MapRoute("Programas", "programas/{linguagem}", new { controller = "Programas", action = "Indice", // Parâmetro opcional linguagem = UrlParameter.Optional }); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
ProgramasController.cs
using MeuMVC.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MeuMVC.Controllers { public class ProgramasController : Controller { // Utiliza parâmetro diretamente na ação definida na rota. public ActionResult Indice(string linguagem) { // Exibe Mensagem var mensagem = "Linguagem: " + Server.HtmlEncode(linguagem); return Content(mensagem); } } }