2012-05-25 25 views
7

He buscado Stack por edades, leo los documentos de MSDN y uso Bing pero no puedo ver por qué esto no funciona. Tengo el código relevante debajo + las rutas. La ruta llamada Browse funciona bien, pero el parámetro productCode para la ruta Details siempre es igual a nada. Si hago modificaciones, sigo obteniendo la página 404 'recurso no encontrado'.Problema de enrutamiento 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 

Las rutas son:

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} 
    ) 

Respuesta

7

El orden no importa la hora de definir sus rutas.

Cuando solicite site.com/details/abc123, creo que coincide con su primera ruta.

Usted recibirá

controller = "details"

action = "Index"

genre = "abc123"

por lo que su Código de producto es nulo.

Cambie las dos declaraciones route.MapRoute, debería solucionar su problema.

Su segunda ruta tiene acción establecida en info en lugar de index, pero supongo que es un error tipográfico?

Cuestiones relacionadas