2009-04-29 2 views
0

Я прочитал статью this о том, как вы можете префикс маршрутов в рубине на рельсах. Я хочу быть в состоянии сделать то же самое с ASP.NET MVCpath_prefix для маршрутов asp.net mvc

Так что я хочу, чтобы иметь возможность определить маршрут, как:

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

Любые советы?

EDIT:

"фотографы/{ID}/фотографии/{PHOTOID}" - кажется, чтобы сделать работу довольно хорошо, но как я могу поддержать

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

Я бы как перенаправить на:/фотографы/1/фотографии/добавить

ответ

3

Определите свой маршрут, как это:

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

Затем определите действие контроллера, как это:

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

Вы можете использовать regex routing или использовать wildcards in your routing table, чтобы {id *} соответствовал /1/photos/2 для pho tographers default controller, проанализировать строку и перенаправить на соответствующее действие.

Также обратите внимание на this сообщение о вложенных ресурсах.

RouteTable.Routes.Add(
     new Route { Url = "events/[eventId]/tickets/[action]/[id]", 
        Defaults = new { controller = "Tickets", 
            action = "List", id = (string)null }, 
        RouteHandler = typeof(MvcRouteHandler) }); 
Смежные вопросы