我认为如果没有重定向,您就无法更改服务器上的查询字符串。
但这段代码对我有用*:
Request.QueryString 编辑
我很惊讶。
所以这是我对此的疑问:
- 为什么 Request.QueryString 是只读的?
- 为什么这段代码/黑客有效*?
- 如果您在完成编辑后立即更改为只读,无论是关于严重错误或意外行为,还是关于维护和理解代码,它有多安全?
- 如果您只使用 PageLoad 和 OnPageRender,那么在事件周期的哪个位置进行这种疯狂的编辑最有意义?
*更多细节:
我有一个页面,其中的项目被分组为选项卡。每个选项卡都是一个 asp:LinkButton
我希望能够直接链接到特定选项卡。我使用 QueryString 参数“tab=tabName”来完成此操作。有用。但是,当我单击一个新选项卡时,查询字符串仍然在 URL 中,因此查询字符串中指定的选项卡被激活,而不是我单击的选项卡。
通过使用Request.QueryString 编辑这不会发生。然后我的解决方案“有效”。
提前致谢。
QueryString 属性是只读的,因为它不能在单个请求上更改。显然,浏览器仅发送一个仅包含一个字符串的请求,因此仅创建一个集合。该黑客使用反射(即操纵代码和内存)来更改通常无法更改的内容。此 hack 破坏了 QueryString 属性的封装和设计。你不应该使用它。从设计的角度来看,这没有任何意义。您的查询没有改变,那么为什么要改变代表它的对象呢?只有浏览器可以发送新的查询字符串,因此您基本上是在对自己的代码谎报浏览器发送的内容。
如果您希望选项卡使用 URL,只需使用超链接而不是 LinkButton。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)