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);
}
}
}




