Reescrever url em asp.net (url amigável em asp.net)
Explicarei aqui uma maneira bem simples de se reescrever uma url também conhecidas como “Url’s amigáveis”. Existem inúmeras vantagens para se reescrever a url uma delas é que os buscadores, como o google, tem dificuldade de entender querystrings como “?” ou “&”, outra seria a legibilidade para o usuário que em vez de ter que memorizar alguma coisa como: “noticias.aspx?id=50&c=esporte&x=10…” vai lidar com algo como: “noticias/50/esporte/nome_da_noticia.aspx”.
1 – Estarei usando o Visual Studio 2008 porém a aplicação funcionará perfeitamente no VS 2005 e no framework 2.0. Abra o VS 2008, vá em File > New > Web Site. Escolha a linguagem C# dê um nome qualquer ao projeto e clique em “Ok”.
2 – Agora clique com o botão em cima do projeto e clique em “Add new item…”, escolha o tipo “Web Form” e de o nome de “produtos.aspx”.
3 – Abra o arquivo “Deafult.aspx” que é criado junto com o projeto e coloque o código abaixo nele:
<a href="produtos/camisas.aspx">Camisas</a><br /> <a href="produtos/calcados.aspx">Calçados</a><br /> <a href="produtos/bermudas.aspx">Bermudas</a><br />
4 – Agora abra o arquivo “produtos.aspx” crie um “label” e coloque o código abaixo no “produtos.aspx.cs”:
produtos.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["categoria"] != null)
{
lblCategoria.Text = Request.QueryString["categoria"];
}
}
produtos.aspx
<asp:Label ID="lblCategoria" runat="server" Text="Label"></asp:Label>
5 – Agora clique novamente com o botão direito em cima do projeto e escolha a opção “Add new item…”, adicione um arquivo do tipo “Global Application Class”, deixe o nome como “Global.asax” mesmo, esse é um arquivo de configurações e pode apenas ter um por projeto. Abra o mesmo e coloque esse código dentro:
void Application_BeginRequest(object Sender, EventArgs e)
{
string originalPath = Request.Url.ToString();
if (originalPath.Contains("produtos/camisas.aspx"))
{
Context.RewritePath("~/produtos.aspx?categoria=camisas");
}
else if (originalPath.Contains("produtos/calcados.aspx"))
{
Context.RewritePath("~/produtos.aspx?categoria=calcados");
}
else if (originalPath.Contains("produtos/bermudas.aspx"))
{
Context.RewritePath("~/produtos.aspx?categoria=bermudas");
}
}
6 – O Evento “Application_BeginRequest” é o primeiro evento a ser executado em sua aplicação, se você colocar um botão por exemplo e clicar nele, antes de qualquer coisa sua aplicação vai passar por esse evento e depois pelos outros eventos, é nele que colocamos a lógica para reescrever a url.
Clique aqui para baixar o projeto, até a próxima!