[P.S. Além de escrever posts neste blog, eu tenho usado
o Twitter mais recentemente para disponibilizar posts rápidos e compartilhar links.
Você pode me seguir no Twitter em http://www.twitter.com/scottgu
(@scottgu é o meu nome no Twitter)]
Este é o oitavo de uma série de posts que estou escrevendo
sobre o próximo lançamento do VS 2010 e .NET 4. O
post de hoje cobre um recurso legal do tempo de execução da ASP.NET 4 – o qual é
a habilidade de usar o roteamento de URL com páginas baseadas em Web Forms (Formulários
Web).
O que é Roteamento de URL?
Roteamento de URL era uma capacidade que nós primeiramente
introduzimos com a ASP.NET 3.5 SP1, a qual já é usada dentro de aplicações ASP.NET
MVC para expor URLs limpas e mais amigáveis para os motores de busca no padrão "web
2.0". O roteamento de URL permite que você configure
uma aplicação para aceitar URLs de requisição que não mapeiam para arquivos físicos.
Em vez disso, você pode usar roteamento para definir
URLs que são semanticamente significativas para os usuários e que podem ajudar no
que diz respeito à otimização de motores de busca (SEO).
Por exemplo, a URL para uma página tradicional que mostra
as categorias de produtos pode ser semelhante a descrita a seguir:
http://www.mysite.com/products.aspx?category=software
Usando o mecanismo de roteamento de URL na ASP.NET 4 você
pode agora configurar a aplicação para aceitar a seguinte URL para exibir a mesma
informação:
http://www.mysite.com/products/software
Com a ASP.NET 4.0, URLs iguais as mostradas acima podem
agora ser mapeadas para classes de Controladores da ASP.NET MVC, bem como para páginas
ASP.NET baseadas em Formulários Web.
Mapeando URLs usando a ASP.NET MVC
O motor de Roteamento de URLs introduzido com a ASP.NET
3.5 SP1 provê uma maneira poderosa para lidar com URLs de entrada. Normalmente você escreve código como parte da inicialização da aplicação
para registrar/mapear URLs que correspondem a um formato de URL específico tendo
em vista a codificação de tratadores de eventos.
A seguir é mostrado um exemplo de como você pode usar a
ASP.NET MVC hoje para mapear a URL produtos/software para uma classe de controlador
chamada "Products" que tem um método de ação denominado "Browse"
(Procurar):
O primeiro parâmetro "products-browse" para o
método de ajuda MapRoute() acima é um nome amigável para a rota. O segundo parâmetro "products/{category}" é o filtro de
URL que corresponde à URL /products/software - e que trata o segundo segmento da
URL como um valor de parâmetro chamado "category" (categoria).
Este parâmetro será, então, passado para o método
de ação Browse() do controlador ProductsController para que este dê início ao processamento.
Mapeamento de URLs usando Formulários Web da ASP.NET
A ASP.NET 4.0 agora permite também que você use o mecanismo
de roteamento de URL para mapear URLs para Formulários Web da ASP.NET, bem como
para Controladores da ASP.NET MVC.
A seguir está um exemplo de como você pode usar o novo método
de ajuda MapPageRoute() na ASP.NET 4.0 para mapear a URL /products/software para
uma págiina "Products.aspx" que reside imediatamente abaixo do diretório
raiz da aplicação:
Os dois primeiros parâmetros para o método de ajuda MapPageRoute()
são os mesmos usados em MapRoute(). O primeiro parâmetro
fornece um nome amigável para a rota, e o segundo especifica o formato de URL aceito.
O terceiro parâmetro, porém, aponta para uma página
Products.aspx para que esta manipule a URL ao invés de uma classe de controlador.
Opcionalmente, você pode especificar parâmetros adicionais
para MapPageRoute() que tiram proveito de recursos como "restrições de rota"
e que fornecem "valores padrão para parâmetros" da mesma forma já utilizada
com a ASP.NET MVC através de registros de rota.
Dentro da página Products.aspx você pode então escrever
código como o mostrado a seguir, o qual utiliza a nova propriedade Page.RouteData da ASP.NET 4.0 para recuperar o valor do parâmetro "category"
mapeado usando o filtro de URL /products/{category}, e em seguida você faz a ligação
dos dados com os produtos da categoria para exibí-los:
Além de acessar via código os parâmetros de entrada da rota
usando código como o mostrado acima, você também pode aproveitar a nova declaração
de controle <asp:routeparameter> com qualquer controle de fonte de dados (DataSource)
para declarativamente vincular um valor de uma rota.
Por exemplo, a seguir nós estamos usando uma declaração <asp:routeparameter>
para vincular o parâmetro @category da instrução select a partir do parâmetro /products/{category}
passado na rota da URL:
Recuperando URLs dentro de um Formulário Web da ASP.NET
O mecanismo de roteamento de URL da ASP.NET pode ser usado
tanto para mapear URLs de entrada para manipuladores de código, bem como ser usados
para programaticamente gerar URLs de saída usando a mesma lógica usada para registrar
o mapeamento.
Por exemplo, quando mapeamos a URL /products/{category}
acima, nós demos um nome "amigável" chamado "products-browse".
Isso nos permite agora também usar o novo método
de ajuda Page.GetRouteUrl() para procurar a rota
no sistema de roteamento de URL, opcionalmente, especificar parâmetros para ela,
e em seguida, recuperar uma URL real que ela mapeia.
Por exemplo, o código a seguir retornaria um valor de URL igual a "/products/software":
Você pode acessar o método de ajuda acima dentro do arquivo
de code-behind ou dentro do código HTML da página .aspx.
Há também agora um conjunto de métodos Response.RedirectToRoute() que você pode usar para redirecionar os usuários para uma
rota (independentemente de se tratar de uma rota manipulada por uma aplicação MVC
ou Formulários Web) e, opcionalmente, passar parâmetros para esta.
Manipulando Cenários de PostBack
O roteamento de URL na ASP.NET 4.0 tem suporte completo
para cenários de post-back. O controle <form runat="server">
emitirá automaticamente a mesma URL que fez com que a página fosse renderizada.
Por exemplo, se você acessar uma página com a URL
/products/software então qualquer controle do servidor <form runat="server">
dentro desta página, renderizaria um elemento HTML <form action="/products/software">
de volta para o cliente - o que significa que qualquer cenário de post-back que
acontece na página irá preservar a URL original.
Isso torna fácil o suporte a URLs limpas, amigáveis para
SEO com os Formulários Web e cenários de postback - e evita alguns dos truques que
as pessoas precisam usar hoje, quando estas usam módulos de reescrita de URL para
conseguir efeitos semelhantes.
Resumo
A ASP.NET 4.0 torna fácil a implementação de URLs limpas,
amigáveis para SEO usando a ASP.NET MVC e agora os Formulários Web (você também
pode ter aplicações que misturam os dois frameworks).
O mecanismo de roteamento de URL torna mais fácil o registro
de URLs de qualquer formato e mapeia as mesmas para qualquer manipulador que você
deseje. Como o mecanismo de roteamento de URL pode
ser usado tanto para mapeamento de URLs de entrada, assim como para gerar URLs de
saída, você pode em um momento posterior alterar os mapeamentos de URL sem ter que
modificar o código de qualquer página ou controlador específico para refletir as
mudanças - o que torna a construção de aplicações otimizadas para SEO muito mais
fácil.
Espero que ajude,
Scott
Texto
traduzido do post original por Leniel Macaferi.