Вопрос

Я читал это статья о том, как вы можете добавлять префиксы к маршрутам в ruby on rails.Я хочу иметь возможность делать то же самое с asp.net mvc

Поэтому я хочу иметь возможность определить маршрут следующим образом :

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

Есть какие - нибудь советы ?

Редактировать:

"фотографы/{id}/фотографии/{PhotoID}" - кажется, со своей работой справляется вполне нормально, НО как я могу поддержать

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

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

Это было полезно?

Решение

Определите свой маршрут следующим образом:

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.
}

Другие советы

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

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

RouteTable.Routes.Add(
        new Route { Url = "events/[eventId]/tickets/[action]/[id]", 
                    Defaults = new { controller = "Tickets", 
                                     action = "List", id = (string)null }, 
                    RouteHandler = typeof(MvcRouteHandler) });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top