Есть ли эквивалент Control.GetRouteUrl на уровне приложения (веб-формы)? - PullRequest
0 голосов
/ 24 сентября 2019

На классических страницах ASPX веб-форм я создаю маршруты URL-адресов с использованием следующего:

var url = this.GetRouteUrl("MyRouteName", new {UserId = 123}); // Generates /UserId/123

MyRouteName определяется в методе Routes.RegisterRoutes(), используемом при запуске.

Однако янеобходимо создать URL-адрес внутри вспомогательного метода, который живет на уровне приложения.Там явно нет контекста страницы, поэтому я получаю сообщение об ошибке.

Документация MSDN гласит:

Этот метод предназначен для удобства кодирования.Это эквивалентно вызову метода RouteCollection.GetVirtualPath (RequestContext, RouteValueDictionary) .Этот метод преобразует объект, который передается в routeParameters, в объект RouteValueDictionary с помощью конструктора RouteValueDictionary.RouteValueDictionary (Object) .

Я прочитал это,но не могу понять, возможно ли то, что мне нужно достичь.Поиск в Интернете показал некоторые ответы, но их много лет, и их нелегко реализовать.

1 Ответ

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

У меня в файле Global.asax в Application_Start

RouteTable.Routes.MapPageRoute("Level1", "{lvl1}", "~/Routing.aspx");//Any name will do for the aspx page.
RouteTable.Routes.MapPageRoute("Level2", "{lvl1}/{*lvl2}", "~/Routing.aspx");

Затем моя страница Routing.aspx.cs обрабатывает логику того, что произойдет с запросом.В основном я Server.Transfer на aspx-страницу, которая будет отображать запрашиваемую страницу.

Страница Routing.aspx подхватывает любую «несуществующую» страницу.

Надеюсь, это поможет или, по крайней мере, даст вамеще несколько идей.

...