在按钮上的Href中,我们使用Server.URLEncode将带有正斜杠的SKU从BDF5555 / 45更改为BD5555%2F45。
当用户单击按钮时,页面将导航到另一个具有Request.QueryString但DNN正在更改URL的模块。
如何获取变量debugprodCode以将&45包括为BDF5555 / 45? 也许DNN正在重写URL?
答案 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为
这是通过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无法做到的产品信息。