是否有 DNN URL 解码方法,因为它正在更改 URL 编码
Is there a DNN URL decode method as it is changing a URL Encode
我们正在使用 Server.URLEncode 将带有正斜杠的 SKU 从 BDF5555/45 更改为按钮上 Href 中的 BD5555%2F45。
当有人点击按钮时,页面导航到另一个模块,该模块具有 Request.QueryString,但 DNN 正在更改 URL。
如何让变量 decodeprodCode 包含 &45 作为 BDF5555/45?
也许 DNN 正在改写 URL?
DotNetNuke.Common.Globals
中有一个NavigateURL
class会根据TabID和大量重载生成正确的url。
DotNetNuke.Common.Globals.NavigateURL(TabId)
您还可以使用查询字符串参数
DotNetNuke.Common.Globals.NavigateURL(TabId, ControlKey,"key=value"))
默认情况下,DNN 会将查询字符串值重写为 URL 中的 /key/value 格式,前提是它已正确编码。例如,如果您的查询字符串值为 sku=1 且 productid = 2,则结果 URL 将是
这是通过 FriendlyUrlProvider 完成的,但它不会对您通过 Request.Querystring 进行处理的能力产生任何影响,因为这是将值传递到 DNN 的一种非常非常普遍的做法。
您检索值的代码是正确的。
我最终使用了以下代码而不是 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 系统中检索产品信息,而 URL 解码无法做到这一点。
我们正在使用 Server.URLEncode 将带有正斜杠的 SKU 从 BDF5555/45 更改为按钮上 Href 中的 BD5555%2F45。
当有人点击按钮时,页面导航到另一个模块,该模块具有 Request.QueryString,但 DNN 正在更改 URL。
如何让变量 decodeprodCode 包含 &45 作为 BDF5555/45? 也许 DNN 正在改写 URL?
DotNetNuke.Common.Globals
中有一个NavigateURL
class会根据TabID和大量重载生成正确的url。
DotNetNuke.Common.Globals.NavigateURL(TabId)
您还可以使用查询字符串参数
DotNetNuke.Common.Globals.NavigateURL(TabId, ControlKey,"key=value"))
默认情况下,DNN 会将查询字符串值重写为 URL 中的 /key/value 格式,前提是它已正确编码。例如,如果您的查询字符串值为 sku=1 且 productid = 2,则结果 URL 将是
这是通过 FriendlyUrlProvider 完成的,但它不会对您通过 Request.Querystring 进行处理的能力产生任何影响,因为这是将值传递到 DNN 的一种非常非常普遍的做法。
您检索值的代码是正确的。
我最终使用了以下代码而不是 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 系统中检索产品信息,而 URL 解码无法做到这一点。