转到 URL 不适用于具有 # 个字符的 URL

Go to URL not working for URL having # character

我已经在我的文本框上定义了一个转到 URL 的操作。为此,我使用了 Go to URL in Action。下面是我在 Expr.

中的代码

="javascript:void(window.open('"+Parameters!url.Value+"'))"

问题是,如果 URL 在参数中有 # 字符,那么 URL 不起作用,并给我一个错误:

The 'Team' parameter is missing a value.

我知道需要对特殊字符进行编码,我正在尝试替换 # 字符,但这不起作用。

参数!url.Value是:https://localhost:80/ReportServer/Pages/ReportViewer.aspx?/Reports/End+Dashboard+-+Drilldown&Sprint=10.5&Team=#LetsDoIt&Type=Drilldown

在这里您可以看到参数 Team 的值为 #LetsDoIt。出于演示目的,我正在使用它,但在现场它来自报告参数组合。仅当 Team 参数的值中包含 # 时,我才会遇到问题。

感谢任何帮助。

基于此:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8df90ea7-899c-4a3a-a327-12b11e7ae184/parameter-contains-character?forum=sqlreportingservices

您需要继续使用urlencoding,但实际上您需要在SSRS报告中对其进行解码。

所以,继续使用这个:

="javascript:void(window.open('"+Replace(Parameters!url.Value,"#","%23")+"'))"

但是在实际的 SSRS 报告中(或多或少来自 MSDN link)

"Go to Data set, right click -> go to Properties -->go to Parameters tab--> change expression of parameter value to"

=Replace(Parameters!Parameter_Name.Value,"%23","#")

.. 意思是在您实际的 SSRS 报告中您需要识别 %23 并将其改回 #

请以后不要写'does not work'。实际花时间观察、理解和描述问题

最后我在 link provided by Nick 的帮助下找到了解决方案。

问题 :我用 %23 替换了 # 来编码 # 但是当 URL 被点击时编码文本 %23 被解码回 #,这破坏了 link 的功能。

因此,我为此使用了双重编码,我将 # 替换为 %2523,如下所示:

="javascript:void(window.open('"+Replace(Parameters!url.Value,"#","%2523")+"'))"

所以现在当谈到 URL 时,它只被解码一次。所以最后的 URL 是: https://localhost:80/ReportServer/Pages/ReportViewer.aspx?/Reports/End+Dashboard+-+Drilldown&Sprint=10.5&Team=%23LetsDoIt&Type=Drilldown 效果很好。