ASP.NET MVC Маршруты с «Расширениями файлов» - PullRequest
11 голосов
/ 01 ноября 2008

Я хочу создать маршрут MVC для списка новостей, который может обслуживаться в нескольких форматах.

  • новости -> (X) HTML
  • news.rss -> RSS
  • news.atom -> ATOM

Возможно ли сделать это (более общая ситуация «необязательного расширения» возникает в нескольких местах в моем запланированном проекте) с одним маршрутом? Или мне нужно сделать два маршрута вроде этого:

routes.MapRoute("News-ImplicitFormat",
                "news",
                new { controller = "News", action = "Browse", format = "" });

routes.MapRoute("News-ExplicitFormat",
                "news.{format}"
                new { controller = "News", action = "Browse" });

Кажется, было бы полезно, чтобы система маршрутизации поддерживала что-то вроде:

routes.MapRoute("News",
                "news(.{format})?",
                new { controller = "News", action = "Browse" });

Ответы [ 2 ]

12 голосов
/ 01 ноября 2008

Я сделал метод для поддержки добавления пар следующим образом:

public static void MapRouteWithOptionalFormat(this RouteCollection routes,
                                              string name,
                                              string url,
                                              object defaults)
{
    Route implicitRoute = routes.MapRoute(name + "-ImplicitFormat",
                                          url,
                                          defaults);
    implicitRoute.Defaults.Add("format", string.Empty);

    Route explicitRoute = routes.MapRoute(name + "-ExplicitFormat",
                                          url + ".{format}",
                                          defaults);
}
0 голосов
/ 02 ноября 2008

Вы можете использовать ограничения, чтобы эта работа работала с обычными маршрутами.

ОБНОВЛЕНИЕ: на самом деле, я неправильно понял вопрос. Другой ответ - это то, что нужно сделать сейчас. Или создайте собственный маршрут. Мы рассматриваем идею дополнительных сегментов как возможную будущую функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...