2012-05-25 101 views
7

我已經搜索堆棧的年齡,閱讀MSDN文檔和使用必應,但看不出爲什麼這不起作用!我已經獲得了相關的代碼+路線。名爲Browse的路線工作得很好,但Details路線的參數productCode始終等於無。如果我做任何MODS我不斷收到'資源未找到'404頁面。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 

的路線是:定義你的路由時

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

回答

7

的順序很重要。

當你請求site.com/details/abc123我認爲它符合你的第一條路線。

你會得到

controller = "details"

action = "Index"

genre = "abc123"

這就是爲什麼你的產品代碼爲空。

切換兩個route.MapRoute聲明,它應該解決您的問題。

你的第二條路線確實將行動設置爲info而不是index,但我假設這是一個錯字?