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

是否重写URL并添加default.aspx?在查询字符串中

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

    我在dnn上有一个产品列表页面。

    在这个模块上,我有一个函数,单击时调用它。我将在URL中添加产品和sku的名称作为查询字符串。我注意到dnn会重写?title=to/title/以及&sku=to/sku/当sku正常且没有正斜杠时。例如sku/sr2018b

    下面的URL可以工作: www.ourwebsite.com/product-view/title/staple-remover-black/sku/sr2018b

    我的主要问题是,当sku有一个特殊的字符,比如正斜杠:ss023/10。这将导致URL中断。我正在为sku使用编码器。注意到了吗?标题没有更改为/title/,现在有一个默认的.aspx?出现在下面的URL中。

    www.ourwebsite.com/product-view?标题/订书钉-2313-1000pcs-100-pages/default.aspx?库存单位=SS023%2F13

    当一个人被重定向到详细页面时,下面是我的代码。

    if (tabIdToRedirectTo == null) m_alerts.ShowModuleMessage(ModuleMessage.ModuleMessageType.RedError, $"An error occurred when attempting to Redirect to the '{settingKey}' Page!", ref plcMessages, true); else Response.Redirect(Globals.NavigateURL(tabIdToRedirectTo.TabID, "", "?Title="+ hiddendescription.Value + "&sku=" + HttpUtility.UrlEncode(hiddensku.Value), EmbeddedModule.GenerateFullQueryStringForEmbedding(EmbeddedCompanyCode, EmbeddedShowCustPricing)));
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   ajwaka    6 年前

    我相信你是这么称呼的 Globals.NavigateUrl 功能。调用获取字符串的参数,这些字符串是 钥匙 = 价值 格式。我通常喜欢很容易地看到我要传递的信息,所以我会做如下的事情:

    var qsParams = new List<string>{
        "Title=" + hiddendescription.Value, // "Title=staples-2313-1000pcs-100-pages"
        "sku=" + HttpUtility.UrlEncode(hiddensku.Value), // "sku=SS023%2f13"
        EmbeddedModule.GenerateFullQueryStringForEmbedding(EmbeddedCompanyCode, EmbeddedShowCustPricing)
    };
    
    return Globals.NavigateURL(tabIdToRedirectTo.TabID, "", qsParams.ToArray());
    

    当然-我不知道你的 EmbeddedModule.GenerateFullQueryStringForEmbedding 是的,但只要它返回 key=value 类型输出,应该通过并处理好。