加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么Request.QueryString只读?

发布时间:2020-12-16 03:30:57 所属栏目:asp.Net 来源:网络整理
导读:我以为你不能在没有重定向的情况下更改服务器上的QueryString. 但是这段代码对我有效: Request.QueryString edit 我很惊讶. 以下是我对此的疑问: 为什么Request.QueryString只读? 为什么这个代码/黑客工作*? 如果您在完成编辑后立即更改为只读,包括错误
我以为你不能在没有重定向的情况下更改服务器上的QueryString.

但是这段代码对我有效:

Request.QueryString edit

我很惊讶.

以下是我对此的疑问:

>为什么Request.QueryString只读?
>为什么这个代码/黑客工作*?
>如果您在完成编辑后立即更改为只读,包括错误错误或意外行为,以及维护和理解代码,它的安全性如何?
>如果您只使用PageLoad和OnPageRender,那么在事件周期中哪里做最疯狂的编辑是最有意义的?

*更多细节:

我有一个页面,其中包含分组到选项卡的项目.每个选项卡都是一个asp:LinkBut??ton

我希望能够直接链接到特定选项卡.我使用QueryString参数’tab = tabName’来做到这一点.有用.但是当我单击一个新选项卡时,查询字符串仍然在Url中,因此Querystring中指定的选项卡被激活,而不是我单击的选项卡.

通过使用Request.QueryString edit,这不会发生.然后我的解决方案“有效”.

提前致谢.

解决方法

那么QueryString属性是只读的,因为它不能在单个请求上更改.显然,浏览器只发送一个只有一个字符串的请求,因此只创建一个集合.黑客使用反射(即操纵代码和内存)来改变你无法正常改变的东西.这个hack打破了QueryString属性的封装和设计.你不应该使用它.从设计的角度来看,没有任何意义.您的查询不会更改,所以为什么要更改代表它的对象?只有浏览器才能发送新的查询字符串,因此您基本上可以使用自己的代码来了解浏览器发送的内容.

如果您希望选项卡使用URL,请使用超链接而不是LinkBut??ton.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读