Pregunta

Entonces esta publicación Hablé sobre cómo implementar realmente la reescritura de URL en una aplicación ASP.NET para obtener "URL amigables".Eso funciona perfecto y es excelente para enviar a un usuario a una página específica, pero ¿alguien conoce una buena solución para crear URL "amigables" dentro de su código cuando se utiliza una de las herramientas a las que se hace referencia?

Por ejemplo, enumerar un enlace dentro de un control asp.net como ~/mypage.aspx?product=12 cuando existe una regla de reescritura sería un problema, ya que entonces estaría vinculando el contenido de dos maneras diferentes.

Estoy familiarizado con el uso de DotNetNuke y FriendlyUrl, donde hay un método "NavigateUrl" que obtendrá el código URL amigable del reescritor, pero no encuentro ejemplos de cómo hacer esto con UrlRewriting.net u otras soluciones. allá.

Lo ideal sería poder conseguir algo como esto.

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

EDITAR: Estoy buscando una solución genérica, no algo que tenga que implementar para cada página de mi sitio, sino algo potencialmente que pueda coincidir con las reglas en la dirección opuesta.

¿Fue útil?

Solución

Ver Enrutamiento.web.del.sistema

Enrutar es diferente a reescribir.La implementación de esta técnica requiere cambios menores en sus páginas (es decir, cualquier código que acceda a los parámetros de la cadena de consulta deberá modificarse), pero le permite generar enlaces basados ​​en las rutas que defina.Lo utiliza ASP.NET MVC, pero puede emplearse en cualquier aplicación ASP.NET.

El enrutamiento es parte de .Net 3.5 SP1

Otros consejos

Cree una clase UrlBuilder con métodos para cada página así:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top