Существует ли метод декодирования URL-адреса DNN при изменении URL-кода? - PullRequest
0 голосов
/ 18 сентября 2018

Мы используем Server.URLEncode для изменения SKU с косой чертой с BDF5555 / 45 на BD5555% 2F45 в нашем Href на кнопке.

enter image description here

Когда человек нажимает на кнопку, страница переходит к другому модулю, у которого есть Request.QueryString, но DNN меняет URL-адрес.

Как я могу получить переменную decodeprodCode для включения & 45 в BDF5555 / 45?Возможно DNN переписывает URL?

enter image description here

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

DNN по умолчанию перезаписывает значения строки запроса в формате / key / value в URL-адресе, предполагая, что он правильно закодирован.Например, если у вас есть значения строки запроса sku = 1 и productid = 2, результирующий URL будет

https://yoursite.com/Your-Page/sku/1/productid/2

Это делается через FriendlyUrlProvider, но этоне должно влиять на вашу способность обрабатывать через Request.Querystring, так как это очень и очень распространенная практика для передачи значений в DNN.

Ваш код для получения значения правильный.

0 голосов
/ 20 сентября 2018

В итоге я использовал следующий код вместо Request.Querystring.

 string RawurlFromRequest = Request.RawUrl;
 var cleanSKU = RawurlFromRequest.Split(new[] {"sku/"}, StringSplitOptions.None)[1];
 var CleanSKUNoOtherQueryStrings = cleanSKU.Split(new[] {"&"}, StringSplitOptions.None)[0];

Request.RawURL возвращает URL со специальными символами, как это без кодировки. Как уже упоминалось выше, Митчел Селлерс, DNN использует FriendlyURLProvider, который переписывает URL.

Например www.mysite.com / ProductFilter / SKU / BDF5555 / 45 и не www.mysite.com/ProductFilter/SKU/BDF5555%2F45

Переменная CleanSKU будет искать SKU / и разбивать все слева, поскольку она установлена ​​на [1].

После того, как все было разделено слева, мы ищем другие строки QueryStrings, которые мы обычно добавляем со знаком &. Мы разделим все справа, установив [0].

Это вернет BDF5555 / 45 в бэкэнд с косой чертой, которую мы можем использовать для получения информации о продукте из нашей системы ERP, чего не мог сделать URLdecode.

0 голосов
/ 18 сентября 2018

В DotNetNuke.Common.Globals есть класс NavigateURL, который будет генерировать правильный URL на основе TabID и множества перегрузок.

DotNetNuke.Common.Globals.NavigateURL(TabId)

Вы также можете использовать параметры строки запроса

DotNetNuke.Common.Globals.NavigateURL(TabId, ControlKey,"key=value"))
...