Веб-формы ASP.net — конфликт имен маршрутизации страниц

Я перестраиваю старый проект с asp 4.0 на 4.52 (перехожу на бутстрап). Это веб-сайт Web Forms, а не MVC. Моя первоначальная версия была сделана с VS2012, а теперь с VS 2015, который немного изменился, например, добавив по умолчанию класс RouteConfig.

В V4.0 мое формирование URL-адреса было следующим:

domain.com/nike-обувь

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

На моем новом сайте это не работает из-за двойственности "/nike-shoes".

При вызове «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 Sub был таким же, но Application_Start был другим (не было RouteConfig):`

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

Предыдущая версия также требовала перенаправления с /page.aspx на /page, который теперь используется по умолчанию. Поскольку я не хочу делать перенаправления, сохранение текущего формирования URL-адреса чрезвычайно важно.

Большое спасибо!


person user1436942    schedule 05.06.2017    source источник
comment
Вы пробовали изменить порядок регистрации?   -  person mason    schedule 05.06.2017
comment
На самом деле да, и это не помогло... Спасибо!   -  person user1436942    schedule 05.06.2017


Ответы (2)


Я думаю, вам нужно иметь разные имена для каждого имени маршрута, например:

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
person iorien    schedule 06.06.2017
comment
Вы правы, и у меня разные имена - я только что сделал здесь ошибку копирования и вставки (которую я сейчас исправил) ... Есть другие предложения? Спасибо - person user1436942; 07.06.2017

Проблема решена -

Измененный:

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

To:

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

Спасибо

person user1436942    schedule 07.06.2017