Reputation: 2386
I've searched Stack for ages, read the MSDN docs and used Bing but cannot see why this won't work! I've got the relevant code below + the routes. The route called Browse
works just fine, but the productCode
param for the Details
route is always equal to nothing. If I make any mods I keep getting the 'resource not found' 404 page.
' 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
The routes are:
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}
)
Upvotes: 7
Views: 713
Reputation: 19812
The order does matter when defining your routes.
When you request site.com/details/abc123
I think it matches your first route.
You will get
controller = "details"
action = "Index"
genre = "abc123"
Which is why your productCode is null.
Switch the two route.MapRoute
statements around, it should fix your problem.
Your second route does have action set to info
rather than index
, but i'm assuming that is a typo?
Upvotes: 7