¿Cómo puedo crear una URL amigable en ASP.NET ¿MVC?
¿Cómo puedo generar URLs amigables dentro del ASP.NET ¿Marco MVC? Por ejemplo, tenemos una URL que se ve así:
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-in-different-languages
EDIT: La parte amigable de la url se conoce como slug.
3 answers
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 renderice los enlaces, debe agregar el texto "amigable":
<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
new { id = 1234, ignoreThisBit="friendly-text-here" });
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-20 13:15:29
Tienes una ruta en el 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:
Controller es la clase cs dentro de la carpeta controllers.
Puede definir su id - con el nombre que elija.
El sistema pasará el valor a su método ActionResult.
Puedes leer más sobre este paso aquí: http://www.asp.net/learn/mvc/tutorial-05-cs.aspx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-20 10:20:53
Así es como he implementado la URL de slug en mi aplicación. Nota: El Maproute predeterminado no debe cambiarse y también 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="" });
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-28 21:38:29