Можно ли иметь параметр в качестве первого узла маршрута? - PullRequest
0 голосов
/ 26 ноября 2010

Я хотел бы иметь следующий тип маршрута в ASP.NET MVC.

  • {a}/{b} -> SiteController.Search (a, b) (где a и b - произвольные строки)

При наличии HomeController

  • home/index -> HomeController.Index ()

Возможно ли это?Возможно ли, если маршруты домашних контроллеров жестко закодированы?т.е.:

routes.MapRoute(
            "Home",                   // Route name
            "Home/{action}",          // URL with parameters
            new { action = "Index" }  // Parameter defaults
        );

1 Ответ

1 голос
/ 26 ноября 2010

Нет, это невозможно без удаления маршрута по умолчанию, поскольку механизм маршрутизации не может устранить неоднозначность между этими двумя URL-адресами:

foo/bar
home/index

Предполагая, что вы хотите, чтобы первое совпадало с {a}/{b}, а второе {controller}/{action}.Даже если вы жестко закодируете маршрут, как в вашем примере, home/index всегда будет соответствовать первому маршруту, который {a}/{b}.

Также, если a и b могут быть произвольными строками, было бы лучше, если бы онибыли переданы в качестве параметров строки запроса.

...