path_prefix per percorsi mvc asp.net
-
03-07-2019 - |
Domanda
Ho letto questo articolo su come aggiungere prefissi ai percorsi in ruby ??su rotaie. Voglio essere in grado di fare la stessa cosa con asp.net mvc
Quindi voglio essere in grado di definire un percorso come:
/photographers/1/photos/2 //photo 2 of photographer with id 1
/photographers/1/photos //all of photographer with id 1
Qualche consiglio?
Modifica
" Photographers / {id} / photos / {photoID} " - sembra fare abbastanza bene il lavoro, MA come posso supportarlo
RedirectToAction<PhotosController>(x => x.Add());
Vorrei reindirizzare a: / photographers / 1 / photos / add
Soluzione
Definisci il tuo percorso in questo modo:
routes.MapRoute(
"Photographers",
"photographers/{id}/photos/{photoID}",
new { controller = "Photographers", action = "Photo", photoID = null });
Quindi definire l'azione del controller in questo modo:
public ActionResult Photo(int id, int? photoID)
{
// If photoID is not null, show just that photo.
// Otherwise, show all photographs.
}
Altri suggerimenti
Potresti usare regex routing o utilizzare caratteri jolly nella tabella di routing in modo che {id *} corrisponda a / 1 / photos / 2
per il controller predefinito dei fotografi, analizza la stringa e reindirizza a un'azione appropriata.
Dai un'occhiata anche a this pubblica informazioni sulle risorse nidificate.
RouteTable.Routes.Add(
new Route { Url = "events/[eventId]/tickets/[action]/[id]",
Defaults = new { controller = "Tickets",
action = "List", id = (string)null },
RouteHandler = typeof(MvcRouteHandler) });