Маршрутизация * Подстановочный знак пути не будет принимать путь, когда только один слэш - PullRequest
1 голос
/ 09 марта 2010

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

routes.MapRoute(
            "ReportRoute", 
            "Report/{*path}", 
            new { controller = "Home", action = "Index"})
            .RouteHandler = new ReportPathRouteHandler();

, где обработчик маршрута разбивает путь на правильные части, чтобы получить правильный отчет, и это прекрасно работает, если я добавлю маршрут www.mysite.com / report / folder1 / folder2 / report , тогда я я получу то, что ищу, однако моя проблема в том, что если у меня есть ссылка типа www.mysite.com / report / folder1 / report , путь * будет folder1 / report и маршрутизации действительно это не нравится, на самом деле она даже не затрагивает мой обработчик маршрутов, а просто переходит на страницу с ошибкой сервера «ресурс не найден». Я попытался обойти это, добавив новый маршрут перед подстановочным знаком, как показано ниже

routes.MapRoute(
            "ReportRoute2",
            "Report/{path}/{name}",
            new { controller = "Home", action = "Index" });

, где Контроллер принимает Path и Name как два строковых параметра, но все еще не радует, есть ли у кого-нибудь идеи или указания относительно того, что может решить эту проблему? Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 10 марта 2010

Первый пример должен быть в порядке (кроме нечетного .RouteHandler = new ReportPathRouteHandler(); в конце). Как выглядит действие вашего контроллера? Принимает ли «строковый путь» в качестве параметра?

...