Asp.Net Mvc Route проблема - PullRequest
       13

Asp.Net Mvc Route проблема

1 голос
/ 14 ноября 2009

Я тестировал несколько вариантов с помощью Route Debugger, но не повезло. Позвольте мне описать то, что я пытаюсь:

У меня все маршруты "переведены" следующим образом (мне нужно было перевести с английского на португальский и иногда упростить):

routes.MapRoute("Article.Create", "cms/artigo/criar",
                new { controller = "Article", action = "Create" });

Все работает. Поскольку у меня определены все маршруты, я думаю, что мне не нужен Default. Итак, у меня есть что-то вроде:

// Other translation routes
routes.MapRoute("Article.Create", "cms/artigo/criar",
                new { controller = "Article", action = "Create" });
routes.MapRoute("Article.Edit", "cms/artigo/editar/{id}",
                new { controller = "Article", action = "Edit", id = "" });
routes.MapRoute("Home.Index", "inicio",
                new { controller = "Home", action = "Index" });
routes.MapRoute("Home.Contact", "contacto",
                new { controller = "Home", action = "Contact" });

// Error Unknown
routes.MapRoute("Error.Unknown", "erro",
                new { controller = "Error", action = "Unknown" });

// Start
routes.MapRoute("Start", "_Default.aspx",
                new { controller = "Home", action = "Index" });

// Error NotFound
routes.MapRoute("Catch.All", "{*path}",
                new { controller = "Error", action = "NotFound", path = "" });

Если корень проходит через преобразование перевода без совпадения, тогда, если это Неизвестная ошибка, отображается только «http://domain.com/erro"
Если нет, попробуйте сопоставить Home / Index.
Наконец идет, чтобы поймать весь маршрут и отображать только путь следующим образом "http://domain.com/the/invalid/path

В моем Web.Config у меня есть:

<customErrors mode="On" defaultRedirect="~/Error/Unknown">
  <error statusCode="404" redirect="~/Error/NotFound" />
</customErrors>

Что происходит, когда я запускаю свой сайт, он всегда переходит к ошибке NotFound, а не к стартовой странице.

Что я делаю не так?

1 Ответ

0 голосов
/ 14 ноября 2009

Вы определили, что единственным URL, который указывает на вашу домашнюю страницу, является "~ / yourapp / _Default.aspx", но ваш начальный URL - "" ~ / yourapp / ", который будет правильно перехватываться вашим Catch .Все трассы. Вы должны изменить свой стартовый маршрут на это:

MapRoute("Start", "", new { controller = "Home", action = "Index" });

Кстати: если вы хотите выполнить модульное тестирование своих маршрутов, вас может заинтересовать следующее: Модульное тестирование маршрутов ASP.NET MVC . Я представляю тестовое устройство для тестирования маршрутов в табличном стиле - идеально, если у вас есть много возможных маршрутов (доступен пример кода).

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