path_prefix para rotas asp.net MVC
-
03-07-2019 - |
Pergunta
Eu li este artigo sobre como você pode prefixar rotas em Ruby on Rails. Eu quero ser capaz de fazer a mesma coisa com asp.net MVC
Então, eu quero ser capaz de definir uma rota como:
/photographers/1/photos/2 //photo 2 of photographer with id 1
/photographers/1/photos //all of photographer with id 1
Todas as dicas?
EDIT:
"fotógrafos / {id} / photos / {Photoid}" - parece estar a fazer o trabalho muito bem, mas como eu posso apoiar
RedirectToAction<PhotosController>(x => x.Add());
Gostaria de redirecionar para: / fotógrafos / 1 / photos / add
Solução
Defina a sua rota como esta:
routes.MapRoute(
"Photographers",
"photographers/{id}/photos/{photoID}",
new { controller = "Photographers", action = "Photo", photoID = null });
Em seguida, definir o seu ação do controlador como este:
public ActionResult Photo(int id, int? photoID)
{
// If photoID is not null, show just that photo.
// Otherwise, show all photographs.
}
Outras dicas
Você pode usar regex roteamento ou usar curingas em sua tabela de roteamento para que a {id *} corresponde a /1/photos/2
para o controlador padrão fotógrafos, analisar a cadeia, e redirecionamento para uma ação apropriada.
Também dê uma olhada este post sobre recursos aninhados.
RouteTable.Routes.Add(
new Route { Url = "events/[eventId]/tickets/[action]/[id]",
Defaults = new { controller = "Tickets",
action = "List", id = (string)null },
RouteHandler = typeof(MvcRouteHandler) });