если я использую строку запроса на странице перенаправления navigateurl на той же странице - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь нажать на ссылку в products.aspx и перенаправить на другую страницу category.aspx.Когда я использую {* id} в маршрутизации для обработки строки запроса на products.aspx, ссылка не работает должным образом.Отправка той же страницы products.aspx.

Мои маршруты:

   routes.MapPageRoute("productsgroup", "products/{groupname}/{*id}", "~/products.aspx");
   routes.MapPageRoute("productscat", "products/brand/{bname}", "~/categories.aspx");

Гиперссылка на странице products.aspx:

<asp:Hyperlink ID="hyper_link" runat="server" NavigateUrl='<% GetRouteUrl("productscat", new {bname=Eval("brand-name").ToString()})%>' Text="Category1"></asp:Hyperlink>

Гиперссылка в asp: Repeater и Eval() работает нормально для ссылки, и ссылка кажется нормальной, когда я нажимаю на гиперссылку, URL меняется, но не отправляет страницу category.aspx.

Если я удаляю строку запроса {* id} и не использую гиперссылкуработает нормально.

Я пытаюсь понять, почему это происходит и что мы можем с этим сделать.

1 Ответ

0 голосов
/ 27 сентября 2019

Есть простое решение.Измените порядок маршрута, и ваш целевой URL-адрес и ссылка будут работать.

routes.MapPageRoute("productscat", "products/brand/{bname}", "~/categories.aspx");
routes.MapPageRoute("productsgroup", "products/{groupname}/{*id}", "~/products.aspx");

Маршрутизация считает целевой URL-адрес «группой продуктов», поскольку ему известно, что URL-адрес и целевой URL-адрес начинаются именно так.Маршрутизация ожидает переменную и второй маршрут, как будто он не существует для маршрутизации.

Надеюсь, это поможет.Приветствия.

...