0

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

在此处输入图像描述

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

如何让变量 decodeprodCode 包含 &45 作为 BDF5555/45?也许 DNN 正在重写 URL?

在此处输入图像描述

4

3 回答 3

1

有一个NavigateURLDotNetNuke.Common.Globals将根据 TabID 和大量重载生成正确的 url。

DotNetNuke.Common.Globals.NavigateURL(TabId)

您还可以使用查询字符串参数

DotNetNuke.Common.Globals.NavigateURL(TabId, ControlKey,"key=value"))
于 2018-09-18T20:19:44.647 回答
1

默认情况下,DNN 会在 URL 中将查询字符串值重写为 /key/value 格式,前提是它已正确编码。例如,如果您有 sku=1 和 productid = 2 的查询字符串值,则生成的 URL 将是

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

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

您检索该值的代码是正确的。

于 2018-09-18T23:53:32.103 回答
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 无法做到这一点。

于 2018-09-20T09:48:31.553 回答