Pregunta

Leí este artículo sobre cómo puede prefijar rutas en ruby ??on rails. Quiero poder hacer lo mismo con asp.net mvc

Así que quiero poder definir una ruta como:

/photographers/1/photos/2   //photo 2 of photographer with id 1
/photographers/1/photos     //all of photographer with id 1

¿Algún consejo?

EDIT:

" fotógrafos / {id} / photos / {photoID} " - parece hacer el trabajo bastante bien, PERO, ¿cómo puedo ayudarlo?

RedirectToAction<PhotosController>(x => x.Add());

Me gustaría redirigir a: / photographers / 1 / photos / add

¿Fue útil?

Solución

Defina su ruta de esta manera:

routes.MapRoute(
    "Photographers",
    "photographers/{id}/photos/{photoID}",
    new { controller = "Photographers", action = "Photo", photoID = null });

Luego define la acción de tu controlador de esta manera:

public ActionResult Photo(int id, int? photoID)
{
    // If photoID is not null, show just that photo.
    // Otherwise, show all photographs.
}

Otros consejos

Podría usar enrutamiento de expresiones regulares o use comodines en su tabla de enrutamiento para que {id *} coincida con / 1 / photos / 2 para el controlador predeterminado de los fotógrafos, analice la cadena y redirija a una acción apropiada.

También eche un vistazo a this publicar sobre recursos anidados.

RouteTable.Routes.Add(
        new Route { Url = "events/[eventId]/tickets/[action]/[id]", 
                    Defaults = new { controller = "Tickets", 
                                     action = "List", id = (string)null }, 
                    RouteHandler = typeof(MvcRouteHandler) });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top