¿Cómo puedo crear una URL amigable en ASP.NET MVC?

¿Cómo puedo generar URLs amigables dentro de ASP.NET MVC Framework? Por ejemplo, tenemos una URL que se ve así:

  http: // sitio / catálogo / BrowseByStyleLevel / 1 

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

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

https://stackoverflow.com/questions/119323/nested-for-loops-in-different-languages

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

EDITAR: La parte amiga de la url se conoce como una babosa .

Hay dos pasos para resolver este problema. Primero, crea una nueva ruta o cambia 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 texto “amigable”:

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

tienes una ruta en global.asax

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

puedes definir tu propia ruta como:

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

usted 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

Así es como he implementado la URL slug en mi aplicación. Nota: Maproute predeterminado no se debe cambiar y las rutas se procesan en el orden en que se agregan 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="" }); 
    Intereting Posts