在更改URL编码时是否有DNN URL解码方法

时间:2018-09-18 10:29:22

标签: url-rewriting dotnetnuke urldecode dotnetnuke-9

在按钮上的Href中,我们使用Server.URLEncode将带有正斜杠的SKU从BDF5555 / 45更改为BD5555%2F45。

enter image description here

当用户单击按钮时,页面将导航到另一个具有Request.QueryString但DNN正在更改URL的模块。

如何获取变量debugprodCode以将&45包括为BDF5555 / 45? 也许DNN正在重写URL?

enter image description here

3 个答案:

答案 0 :(得分:1)

There is a NavigateURL class in DotNetNuke.Common.Globals that will generate a correct url based on a TabID and a lot of overloads.

DotNetNuke.Common.Globals.NavigateURL(TabId)

You can also use querystring parameters

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

答案 1 :(得分:1)

假设

DNN正确编码,它将默认将查询字符串值重写为URL中的/ key / value格式。例如,如果您的查询字符串值为sku = 1且productid = 2,则结果URL为

  

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

这是通过FriendlyUrlProvider完成的,但对您通过Request.Querystring进行处理的能力不会产生任何影响,因为这是将值传递到DNN的非常非常普遍的做法。

您获取值的代码正确。

答案 2 :(得分:0)

我最终使用以下代码代替了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带回原样而不进行编码。正如上面提到的Mitchel Sellers一样,DNN使用FriendlyURLProvider重写URL。

例如 www.mysite.com/ProductFilter/SKU/BDF5555/45 ,而不是 www.mysite.com/ProductFilter/SKU/BDF5555%2F45

CleanSKU变量将查找SKU /并在左侧将其设置为[1]时拆分所有内容。

在左侧将所有内容拆分后,我们会寻找其他QueryString,这些字符串通常以&符号添加。通过将其设置为[0],我们将在右侧拆分所有内容。

这将使BDF5555 / 45在后端带有正斜杠,我们可以使用该斜杠从我们的ERP系统中检索URLdecode无法做到的产品信息。