对于我们的顶级菜单,我们使用基本上从XML文件读取的自定义控件。该控件的名称为SCS.MultiMenu
。
其中一个菜单项是一个报告,其链接如下:
http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport
报告使用该网址正确生成。
因此,在XML文件中,menuitem如下所示:
<MenuItem Text="My report"
Url="http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/Report"
PostBack="False"/>
当我点击此菜单项时,我被重定向到以下链接,这是不正确的:http://myserver/ReportServer/Pages/ReportViewer.aspx?
如您所见,它删除了问号后的所有内容。
我尝试使用转义序列来查看它是否接受正确的URL(例如??用于问号(?)和/用于斜杠)但是它会在“?”之后继续剪切所有内容。我试过这样的事情:
http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport
问题是什么?我甚至尝试将每个字符切换为escpae序列,但是没有用。
我认为这个菜单控件可能是错误的,但是没有意义。
我包含了我尝试过的所有内容以及点击它时网址的样子:
http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?
http://MyServer/ReportServer/Pages/ReportViewer.aspx?path=%2FFolder%2FReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?path=/Folder/Report&
http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?
http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport=
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport=&
http://MyServer/ReportServer/Pages/ReportViewer.aspx?=/Folder/MyReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?=/Folder/MyReport&
由于
答案 0 :(得分:0)
library以特殊方式处理菜单项的网址:
从网址中剪切查询字符串并解析它:
&
拆分为单个参数=
拆分为名称值对。 (见QueryString.cs
)
如果在步骤2中没有=
,则会以静默方式丢弃该参数,这就是原因
你的查询字符串/Folder/Report
消失了。
如果/Folder/Report=
或=/Folder/Report
在此处理后仍然存在并且您的服务器已接受,则可以尝试。