2012-05-25 14 views
7

Szukałem stosu przez wieki, czytałem dokumenty MSDN i używałem Bing, ale nie rozumiem, dlaczego to nie zadziała! Mam odpowiedni kod poniżej + trasy. Trasa o nazwie Browse działa dobrze, ale parametr productCode dla trasy Details jest zawsze równy zeru. Jeśli robię jakieś mody, ciągle otrzymuję stronę "Nie znaleziono zasobów" 404.Problem routingu 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 

Trasy są:

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

Odpowiedz

7

Kolejność ma znaczenie przy określaniu swoich tras.

Po zamówieniu site.com/details/abc123 myślę, że pasuje do pierwszej trasy.

Dostaniesz

controller = "details"

action = "Index"

genre = "abc123"

dlatego Twój kod_produktu jest null.

Przełącz dwa oświadczenia route.MapRoute wokół, powinno to naprawić problem.

Twoja druga trasa ma ustawienie akcji na info zamiast index, ale zakładam, że to literówka?

Powiązane problemy