Introducción FriendlyUrls en ASP.NET

Estrada Web Group
Administrador
Introducción FriendlyUrls en ASP.NET

Friendly URP with Asp.net

La optimización del Search Engine es uno de los factores clave para tu sitio. Si vas a gastar millones de pesos en hacer que tu página web se vea bien y libre de errores, también debes tener en cuenta, que es posible que los motores de búsqueda, no pelen tu sitio web debido a las URL. Por ejemplo, tienes un carrito de compras en asp.net y no se ha optimizado su URL. La URL se verá como se ve a continuación.

www.carritocompras.com/Product.aspx?Category=1&Page=1

Hay una nueva característica en ASP.NET que nos facilita las URL amigables y es muy sencillo de implementar. Damian Edwards y Levi Broderick han llegado con una solución bastante impresionante sobre la base de la "Smarty Routes"  idea original de Eilon Lipton y el resultado ha sido las FriendlyUrls.

Puedes descargar la versión más reciente de ASP.NET Friendly desde la siguiente URL.

 

http://aspnetfriendlyurls.codeplex.com/

Si está utilizando NuGet puedes descargarla del siguiente enlace.

https://nuget.org/packages/Microsoft.AspNet.FriendlyUrls

Bueno veremos el siguiente ejemplo. Abra Visual Studio y Archivo | Nuevo proyecto | New Forms ASP.NET Web Application. Ahora, desde la consola de administrador de paquetes o desde Administrar paquetes NuGet, instale Microsoft.AspNet.FriendlyUrls.

1. Crea un módulo que se llame RouteConfig con el siguiente código.

Imports Microsoft.VisualBasic
Imports System.Collections.Generic
Imports System.Web.Routing
Imports Microsoft.AspNet.FriendlyUrls
Public Module RouteConfig
    Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.EnableFriendlyUrls()
    End Sub
End Module

2. Después abre tu Global.asax.vb y en Application_Start agrega RouteConfig.RegisterRoutes(RouteTable.Routes), esto para asegurarnos de cargar la ruta FriendlyUrls, debe quedar como se muestra a continuación:

<%@ Application Language="VB" %>
<%@ Import Namespace="System.Web.Routing" %>

<script runat="server">

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs on application startup
        RouteConfig.RegisterRoutes(RouteTable.Routes)
    End Sub
    
    Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs on application shutdown
    End Sub
        
    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when an unhandled error occurs
    End Sub

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when a new session is started
    End Sub

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when a session ends. 
        ' Note: The Session_End event is raised only when the sessionstate mode
        ' is set to InProc in the Web.config file. If session mode is set to StateServer 
        ' or SQLServer, the event is not raised.
    End Sub
       
</script>

Pero, ¿Cómo puedo obtener los valores de la URL? Estoy acostumbrado a Request.QueryString y Request.Form, pero ¿cómo generar las URL y cómo obtengo los parámetros?

3. Agrega una página que se llame default.aspx, destino.aspx y categoría.aspx, agrega el código html como se muestra a continuación.

Default.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <nav>
    <ul id="menu">
        <li><a id="A1" runat="server" href="~/">Home</a></li>
        <li><a id="A2" runat="server" href="~/Destino">Destino</a></li>        
    </ul>
</nav>
    </div>
    </form>
    
</body>
</html>

Destino.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Destino.aspx.vb" Inherits="Destino" %>
<%@ Import Namespace="Microsoft.AspNet.FriendlyUrls" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <ul id="menu">
        <li><a id="A1" runat="server" href="~/Default">Home</a></li>
        <li><a id="A2" runat="server" href="~/Destino">Destino</a></li>   
        <li><a href="<%: FriendlyUrl.Href("~/Categoria", "Carros", "20")%>">Parametro1</a></li>     
    </ul>
    </div>
    </form>
</body>
</html>

Categoria.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Categoria.aspx.vb" Inherits="Categoria" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Label ID="lblParametro" runat="server" Text=""></asp:Label>
    </div>
    </form>
</body>
</html>

4. Para recuperar el parámetro que se regresa de la página destino ponemos el siguiente código en categoria.aspx.vb

Imports Microsoft.AspNet.FriendlyUrls
Partial Class Categoria
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        Dim UrlSegments As IList(Of String) = Request.GetFriendlyUrlSegments()
        Dim parametro As String = ""
        For i = 0 To UrlSegments.Count - 1
            parametro = UrlSegments(i).ToString
        Next
        lblParametro.Text = parametro
    End Sub
End Class

Y listo cuando navegues veras tus URL optimizadas, pruébalo a ver que te parece y nos comentas los resultados, la navegación debería ser como se ve en las imágenes.

URL amigables con asp.net

Compartir artículo:

Más artículos geniales

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;