Question

Je lis un cet article sur la manière de préfixer les itinéraires en ruby ??on rails. Je veux pouvoir faire la même chose avec asp.net mvc

Je souhaite donc pouvoir définir un itinéraire tel que:

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

Des conseils?

EDIT:

"photographers / {id} / photos / {photoID}" - semble faire le travail assez bien, MAIS comment puis-je soutenir

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

Je voudrais rediriger vers: / photographers / 1 / photos / add

Était-ce utile?

La solution

Définissez votre itinéraire comme suit:

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

Définissez ensuite l'action de votre contrôleur comme suit:

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

Autres conseils

Vous pouvez utiliser routage regex ou utilisez Caractères génériques dans votre table de routage afin que le {id *} corresponde au / 1 / photos / 2 du contrôleur par défaut des photographes, analyse la chaîne et redirige vers une action appropriée.

Jetez également un coup d’œil à this publier sur les ressources imbriquées.

RouteTable.Routes.Add(
        new Route { Url = "events/[eventId]/tickets/[action]/[id]", 
                    Defaults = new { controller = "Tickets", 
                                     action = "List", id = (string)null }, 
                    RouteHandler = typeof(MvcRouteHandler) });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top