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

È stato utile?

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) });
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top