2017-06-05 106 views
0

我正在從asp 4.0重建一箇舊項目到4.52(移動到引導程序)。 這是一個Web Forms網站,而不是MVC。 我的原始版本是用VS2012製作的,現在它與VS 2015有點相似,例如默認添加了RouteConfig類。ASP.net Web窗體 - 頁面路由命名衝突

在V4.0我的網址形成用於如下:

domain.com/nike-shoes

domain.com/nike-shoes/nike-air-pegasus-21-1001

在我的新網站,它不工作,因爲「/ nike鞋」的重複。

呼喚 「domain.com/nike-shoes/nike-air-pegasus-21」 就叫 「domain.com/nike-shoes」

這裏是 「新」 的代碼:

Sub Application_Start(sender As Object, e As EventArgs) 
    RouteConfig.RegisterRoutes(RouteTable.Routes) 
    BundleConfig.RegisterBundles(BundleTable.Bundles) 
    RegisterRoutes(RouteTable.Routes) 
End Sub 

Sub RegisterRoutes(ByVal routes As RouteCollection) 
    routes.MapPageRoute("Nike-Shoes", "nike-shoes", "~/nike-shoes.aspx") 
    routes.MapPageRoute("Nike-Shoe", "nike-shoes/{shoe-id}", "~/display-shoe.aspx") 
End Sub 

的舊代碼的RegisterRoutes子是相同的,但的Application_Start是不同的(沒有RouteConfig):`

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)    
     RegisterRoutes(RouteTable.Routes) 
    End Sub 

以前版本也需要從/page.aspx重新路由到/頁現在是默認。由於我不想做重定向,因此保持當前網址的形成非常重要。

非常感謝!

+0

您是否嘗試過扭轉註冊順序? – mason

+0

其實是的,它沒有幫助...謝謝! – user1436942

回答

0

我認爲你需要有不同的名稱爲每個路由名稱,類似:

Sub RegisterRoutes(ByVal routes As RouteCollection) 
    routes.MapPageRoute("Nike-Shoes", "nike-shoes", "~/nike-shoes.aspx") 
    routes.MapPageRoute("Nike-Shoes-2", "nike-shoes/{shoe-id}", "~/display-shoe.aspx") 
End Sub 
+0

你是對的,我有不同的名字 - 我只是在這裏做了一個複製粘貼錯誤(我現在修正了)...其他的糖果?謝謝 – user1436942

0

問題解決了 -

更改:

RouteConfig.RegisterRoutes(RouteTable.Routes) 
BundleConfig.RegisterBundles(BundleTable.Bundles) 
RegisterRoutes(RouteTable.Routes) 

要:

RegisterRoutes(RouteTable.Routes) 
    RouteConfig.RegisterRoutes(RouteTable.Routes) 
    BundleConfig.RegisterBundles(BundleTable.Bundles) 

謝謝