path_prefix для маршрутов asp.net mvc - PullRequest
0 голосов
/ 29 апреля 2009

Я прочитал эту статью о том, как вы можете добавлять префиксы к маршрутам в ruby ​​на рельсах. Я хочу быть в состоянии сделать то же самое с 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} / photos / {photoID}" - похоже, все делает нормально, НО как я могу поддержать

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

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

Ответы [ 2 ]

3 голосов
/ 29 апреля 2009

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

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 голосов
/ 29 апреля 2009

Вы можете использовать regex routing или использовать подстановочные знаки в вашей таблице маршрутизации , чтобы {id *} совпадал с /1/photos/2 для контроллера по умолчанию для фотографов, проанализировал строку и перенаправить на соответствующее действие.

Также взгляните на этот пост о вложенных ресурсах.

RouteTable.Routes.Add(
        new Route { Url = "events/[eventId]/tickets/[action]/[id]", 
                    Defaults = new { controller = "Tickets", 
                                     action = "List", id = (string)null }, 
                    RouteHandler = typeof(MvcRouteHandler) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...