Pergunta

Então este post falou sobre como implementar realmente url reescrever em um aplicativo ASP.NET para obter "URLs amigáveis". Isso funciona perfeito e é grande para enviar um usuário a uma página específica, mas alguém sabe de uma boa solução para a criação de URLs "amigáveis" dentro de seu código quando utilizar uma das ferramentas referenciados?

Por exemplo listando um link dentro de um controle asp.net como ~ / MyPage.aspx? Produto = 12 quando uma regra de reescrita existe seria um problema como então você está ligando para o conteúdo de duas maneiras diferentes.

Eu estou familiarizado com o uso do DotNetNuke e FriendlyUrl onde existe um método "NavigateUrl" que vai obter o código Url amigável do re-writer, mas eu não estou encontrando exemplos de como fazer isso com UrlRewriting.net ou o outras soluções lá fora.

Idealmente, eu gostaria de ser capaz de obter algo como isto.

string friendlyUrl = GetFriendlyUrl("~/MyUnfriendlyPage.aspx?myid=13");

EDIT: Eu estou procurando uma solução genérica, não é algo que eu tenho que implementar para cada página no meu site, mas potencialmente algo que pode igualar contra as regras na direção oposta.

Foi útil?

Solução

System.Web.Routing

Routing é um diferente de reescrever. A implementação desta técnica requer pequenas alterações em suas páginas (ou seja, qualquer código acessando parâmetros querystring terá de ser modificado), mas ele permite que você gerar links baseados nas rotas definidas. Ele é usado por ASP.NET MVC, mas pode ser empregado em qualquer aplicação ASP.NET.

Routing faz parte do .Net 3.5 SP1

Outras dicas

Crie uma classe UrlBuilder com métodos para cada página assim:

public class UrlBuilder
{
    public static string BuildProductUrl(int id)
    {
        if (true) // replace with logic to determine if URL rewriting is enabled
        {
            return string.Format("~/Product/{0}", id);
        }
        else
        {
            return string.Format("~/product.aspx?id={0}", id);
        }
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top