2012-05-25 4 views
7

Я искал Stack целую вечность, прочитал документы MSDN и использовал Bing, но не могу понять, почему это не сработает! У меня есть соответствующий код ниже + маршрутов. Маршрут под названием Browse работает просто отлично, но параметр productCode для маршрута Details всегда равен ничему. Если я делаю какие-либо моды, я продолжаю получать страницу «Ресурс не найден» 404.Проблема маршрутизации ASP.NET MVC4

' Lives in controller called 'Details' 
' Usage: site.com/details/abc123 
Function Index(productCode As String) As ActionResult 

' Lives in controller called 'Browse'  
' Usage: site.com/browse/scifi/2 
Function Index(genre As String, Optional page As Integer = 1) As ActionResult 

Трассы:

routes.MapRoute(_ 
     "Browse", _ 
     "{controller}/{genre}/{page}", _ 
     New With {.controller = "Browse", .action = "Index", .id = UrlParameter.Optional, .page = UrlParameter.Optional} 
    ) 

    routes.MapRoute(_ 
     "Details", _ 
     "details/{productCode}", _ 
     New With {.controller = "Details", .action = "Info", .productCode = UrlParameter.Optional} 
    ) 

ответ

7

Порядок имеет значение при определении ваших маршрутов.

Когда вы запрашиваете site.com/details/abc123 Я думаю, что это соответствует вашему первому маршруту.

Вы получите

controller = "details"

action = "Index"

genre = "abc123"

Именно поэтому ваш ProductCode является недействительным.

Переключите два заявления route.MapRoute вокруг, оно должно исправить вашу проблему.

Ваш второй маршрут имеет действие, установленное на info, а не index, но я предполагаю, что это опечатка?

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