代码之家  ›  专栏  ›  技术社区  ›  Tig7r

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

  •  0
  • Tig7r  · 技术社区  · 6 年前

    enter image description here

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

    也许DNN正在重写URL?

    enter image description here

    3 回复  |  直到 6 年前
        1
  •  1
  •   VDWWD    6 年前

    有一个 NavigateURL DotNetNuke.Common.Globals 这将基于TabID和大量重载生成正确的url。

    DotNetNuke.Common.Globals.NavigateURL(TabId)
    

    也可以使用querystring参数

    DotNetNuke.Common.Globals.NavigateURL(TabId, ControlKey,"key=value"))
    
        2
  •  1
  •   Mitchel Sellers    6 年前

    默认情况下,DNN会将querystring值重新写入URL中的/key/value格式,前提是该格式已正确编码。例如,如果querystring值为sku=1和productid=2,则生成的URL将是

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

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

        3
  •  0
  •   Tig7r    6 年前

    我最终使用以下代码而不是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

    在将所有内容拆分到左侧之后,我们将查找其他查询字符串,这些字符串通常会添加一个&签字。我们将通过将其设置为[0]来拆分右侧的所有内容。

    这将带回BDF5555/45在后端与一个正斜杠,我们可以用它来检索我们的ERP系统,URLdecode不能做的产品信息。

    推荐文章