Roteamento de URL com ASP.NET 4 e Formulários Web (Série de posts sobre VS 2010 e .NET 4.0) - ScottGu's Blog em Português

Roteamento de URL com ASP.NET 4 e Formulários Web (Série de posts sobre VS 2010 e .NET 4.0)


[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):

Step1

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:

Step2

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:

step3

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:

step4

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":

step6

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.

Published Tuesday, October 13, 2009 2:13 AM by Leniel Macaferi

Comments

# S&#233;rie de posts sobre Visual Studio 2010 e .NET 4 - ScottGu's Blog em Portugu??s

Pingback from  S&#233;rie de posts sobre Visual Studio 2010 e .NET 4 - ScottGu's Blog em Portugu??s

Leave a Comment

(required) 
(required) 
(optional)
(required)