Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么Request.QueryString是只读的?_Asp.net_Request.querystring - Fatal编程技术网

Asp.net 为什么Request.QueryString是只读的?

Asp.net 为什么Request.QueryString是只读的?,asp.net,request.querystring,Asp.net,Request.querystring,我以为没有重定向就无法更改服务器上的查询字符串 但是这个代码对我来说是有效的: 我太惊讶了 以下是我的问题: 为什么Request.QueryString是只读的 为什么这个代码/黑客可以工作* 如果在编辑完成后立即更改为只读,无论是关于错误或意外行为,还是关于维护和理解代码,安全性如何 如果您只使用PageLoad和OnPageRender,那么在事件周期中,执行这种疯狂的编辑最有意义的地方是什么 *更多详细信息: 我有一个页面,其中的项目被分组到选项卡中。每个选项卡都是一个asp:Lin

我以为没有重定向就无法更改服务器上的查询字符串

但是这个代码对我来说是有效的:

我太惊讶了

以下是我的问题:

  • 为什么Request.QueryString是只读的
  • 为什么这个代码/黑客可以工作*
  • 如果在编辑完成后立即更改为只读,无论是关于错误或意外行为,还是关于维护和理解代码,安全性如何
  • 如果您只使用PageLoad和OnPageRender,那么在事件周期中,执行这种疯狂的编辑最有意义的地方是什么

  • *更多详细信息:

    我有一个页面,其中的项目被分组到选项卡中。每个选项卡都是一个asp:LinkButton

    我希望能够直接链接到特定选项卡。我使用QueryString参数“tab=tabName”来实现这一点。它起作用了。但是,当我单击一个新选项卡时,querystring仍然在Url中,因此querystring中指定的选项卡被激活,而不是我单击的选项卡

    使用这种方法是不会发生的。那么我的解决方案‘有效’


    提前感谢。

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


    如果您希望选项卡使用URL,只需使用超链接而不是LinkButton。

    根据我记得的阅读,这是所有浏览器都遵守的安全标准。它的主要目的是阻止网络钓鱼攻击,有人可能拥有网站www.MyLameWarcraftPhishingSite.com”,当有人点击该页面时,重写url,使其看起来像www.blizzard.com。访问该url的唯一方法是实际重定向到该url


    嗯,上一篇文章是在2月11日-希望可以在这里发表。

    你能为你的页面发布标记吗?我发现当我与框架发生冲突时,我通常会做一些错误或愚蠢的事情,或者两者兼而有之。我的代码有点复杂,所以除非我为了这个问题将其删减一点,否则可能无法发布。谢谢你的提示。感谢您的回复。如何在后续回发中删除QueryString参数?Response.Redirect。但是,我怀疑您是否希望选项卡进行回发。可能是这样,但通常这不是最好的方式。