¿Puedo generar rutas ASP.NET MVC desde un mapa del sitio?
-
08-06-2019 - |
Pregunta
Estoy pensando en aprender el ASP.NET MVC
marco para un próximo proyecto.¿Puedo utilizar el enrutamiento avanzado para crear URL largas basadas en la jerarquía del mapa del sitio?
Ruta de navegación de ejemplo:
Inicio > Tienda > Productos > Hogar > Cocina > Baterías de cocina > Baterías de cocina > Antiadherentes
URL MVC típica (creo):
http://example.com/products/category/NonstickCooksets
URL deseada:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
¿Puedo hacer esto?
Solución
Zack, si entiendo bien, quieres una profundidad ilimitada de las subcategorías.No es gran cosa, desde MVC Preview 3 (creo que 3 o 4) esto se ha resuelto.
Simplemente define una ruta como
"{controlador}/{acción}/{*categoryPath}"
para una URL como:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
deberías tener un ShopController con una acción Productos:
public class ShopController : Controller
{
...
public ActionResult Products(string categoryPath)
{
// the categoryPath value would be
// "household/kitchen/cookware/cooksets/nonstick". Process it (for ex. split it)
// and then decide what you do..
return View();
}
Otros consejos
El enrutamiento MVC le permite definir prácticamente cualquier estructura que desee, solo necesita definir qué significa semánticamente cada una de las piezas.Puede tener bits que estén "codificados", como "tienda/productos", y luego definir el resto como variable, "{categoría}/{subcategoría}/{especialidad}", etc.
También puede definir varias rutas que se asignen al mismo punto final si lo desea.Básicamente, cuando una URL ingresa a su aplicación MVC, recorre la tabla de enrutamiento hasta que encuentra un patrón que coincide, completa las variables y pasa la solicitud al controlador apropiado para su procesamiento.
Si bien la ruta predeterminada es una configuración simple de tipo Controlador, Acción e Id., ciertamente eso no es todo lo que puede hacer.