2012-05-25 5 views
7

Ho cercato Stack per anni, ho letto i documenti MSDN e ho usato Bing ma non vedo perché questo non funziona! Ho il codice pertinente sotto + i percorsi. Il percorso chiamato Browse funziona perfettamente, ma il parametro productCode per il percorso Details è sempre uguale a nulla. Se faccio qualche mod continuo a ricevere la pagina 404 "risorsa non trovata".Problema di routing 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 

Gli itinerari sono:

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

risposta

7

L'ordine non importa quando si definiscono i percorsi.

Quando si richiede site.com/details/abc123, penso che corrisponda al primo percorso.

Otterrete

controller = "details"

action = "Index"

genre = "abc123"

motivo per cui il ProductCode è nullo.

Cambia le due istruzioni route.MapRoute in giro, dovrebbe risolvere il problema.

Il secondo percorso ha un'azione impostata su info anziché su index, ma suppongo che sia un errore di battitura?