2009-11-14 2 views
1

Я тестировал несколько параметров с помощью Отладчика маршрута, но не повезло. Позвольте мне описать то, что я пытаюсь:Проблема с маршрутом Asp.Net Mvc

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

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

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

// 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 а не на главную страницу.

что я делаю неправильно?

+0

Было бы намного проще, если бы вы могли отредактировать вопрос и изменить код, чтобы он отображался как код. Нажмите кнопку 101010 и вставьте код – Luke101

+0

. Почему вы не выделяете свой код с помощью виджета типа – 2009-11-16 03:58:56

ответ

0

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

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

Btw .: Если вы хотите, чтобы блок проверить свои маршруты, вы можете быть заинтересованы в этом: Unit testing ASP.NET MVC routes. Я представляю тестовое оборудование для тестирования маршрутов в табличном стиле - идеально, если у вас есть много возможных маршрутов (пример кода доступен).

Смежные вопросы