我在DNN上有一个“产品列表”页面。
在此模块上,我有一个单击时即被调用的函数。我在URL中将产品名称和SKU添加为查询字符串。我注意到,当SKU正常且没有正斜杠时,DNN会将?Title =重写为/ Title /以及&SKU =重写为/ SKU /。例如SKU / SR2018B
以下网址可以使用: www.ourwebsite.com/Product-View/Title/staple-remover-black/sku/SR2018B
我的主要问题是SKU具有特殊字符(例如正斜杠)时,例如:SS023 / 10。这将导致URL中断。我正在为SKU使用编码器。注意,标题没有更改为/ Title /,现在有一个Default.aspx?出现在下面的URL中。
www.ourwebsite.com/Product-View?Title/staples-2313-1000pcs-100-pages/Default.aspx?sku=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)));
答案 0 :(得分:1)
我相信这就是您调用Globals.NavigateUrl
函数的方式。该调用采用字符串参数,这些字符串是您的查询字符串,格式为 key = value 。我通常喜欢轻松地查看自己即将通过的内容,因此我会执行以下操作:
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
类型的输出,就应该正确地传递和处理它。