2012-05-25 29 views
7

Tôi đã tìm kiếm Stack theo độ tuổi, đọc tài liệu MSDN và sử dụng Bing nhưng không thể thấy tại sao điều này không hoạt động! Tôi đã có mã có liên quan bên dưới + các tuyến đường. Tuyến đường được gọi là Browse hoạt động tốt, nhưng thông số productCode cho tuyến đường Details luôn bằng với không có gì. Nếu tôi thực hiện bất kỳ mod nào, tôi tiếp tục nhận được trang 404 'không tìm thấy tài nguyên'.Vấn đề định tuyến 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 

Các tuyến đường bao gồm:

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

Trả lời

7

Trình tự thực hiện vấn đề khi xác định các tuyến đường của bạn.

Khi bạn yêu cầu site.com/details/abc123 Tôi cho rằng nó khớp với tuyến đường đầu tiên của bạn.

Bạn sẽ nhận được

controller = "details"

action = "Index"

genre = "abc123"

Đó là lý do tại sao productCode của bạn là null.

Chuyển đổi hai câu hỏi route.MapRoute xung quanh, nó sẽ khắc phục được sự cố của bạn.

Tuyến đường thứ hai của bạn không có hành động được đặt thành info thay vì index, nhưng tôi giả định đó là lỗi đánh máy?

Các vấn đề liên quan