Pregunta

¿Cómo genero direcciones URL amigables dentro de ASP.NET MVC Framework? Por ejemplo, tenemos una URL que se parece a esto:

http://site/catalogue/BrowseByStyleLevel/1

El 1 es Id del nivel de estudio (más alto en este caso) para navegar, pero me gustaría reformatear la URL de la misma manera que lo hace StackOverflow.

Por ejemplo, estas dos URL te llevarán al mismo lugar:

  

https://stackoverflow.com/questions/119323/nested-for-loops -en-diferentes-idiomas

     

https://stackoverflow.com/questions/119323/

EDITAR: La parte amigable de la URL se conoce como slug .

¿Fue útil?

Solución

Hay dos pasos para resolver este problema. Primero, cree una nueva ruta o cambie la ruta predeterminada para aceptar un parámetro adicional:

routes.MapRoute(  "Default", // Route name
                   "{controller}/{action}/{id}/{ignoreThisBit}", 
                   new { controller = "Home", 
                         action = "Index", 
                         id = "",
                         ignoreThisBit = ""}  // Parameter defaults )

Ahora puede escribir lo que quiera al final de su URI y la aplicación lo ignorará.

Cuando renderiza los enlaces, debe agregar el " amigable " texto:

<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
                    new { id = 1234, ignoreThisBit="friendly-text-here" });

Otros consejos

Así es como he implementado la URL de slug en mi aplicación. Nota: El Maproute predeterminado no se debe cambiar y las rutas se procesan en el orden en que se agregaron a la lista de rutas.

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home",
          action = "Index",
          id = UrlParameter.Optional
    } // Parameter defaults
);
routes.MapRoute("Place", "{controller}/{action}/{id}/{slug}", new { controller = "Place", action = "Details", id = UrlParameter.Optional,slug="" });

tiene una ruta en global.asax

  routes.MapRoute(
                    "Default", // Route name
                    "{controller}/{action}/{id}", // URL with parameters
                    new { controller = "Home", action = "Index", id = ""} 
                    // Parameter defaults )

puede definir su propia ruta como:

controlador es la clase cs dentro de la carpeta de controladores.

puede definir su identificación, con el nombre que elija.

el sistema pasará el valor a su método actionResult.

puede leer más sobre este paso aquí: http: // www.asp.net/learn/mvc/tutorial-05-cs.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top