Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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
C# 有没有办法从asp.net中的查询字符串中删除项?_C#_Asp.net_Query String - Fatal编程技术网

C# 有没有办法从asp.net中的查询字符串中删除项?

C# 有没有办法从asp.net中的查询字符串中删除项?,c#,asp.net,query-string,C#,Asp.net,Query String,如果有,我可以在页面加载时循环并删除这些项目吗?查询字符串似乎是一个只读集合。如果页面是回发,则querystring数据已过时。发生这种情况时,我想重新清理URL?有什么办法吗?不幸的是,即使您从服务器端的字符串中删除了项目,当您发送回响应时,浏览器也不会在意——它仍然会显示原始URL 通过发出响应.redirect(),可以将浏览器重定向到一个新的URL,并删除参数 另外,考虑将查询更改为使用POST而不是GET,所以参数不会出现在URL中。 < P>这里的一些解决方案: 您应该能够提取

如果有,我可以在页面加载时循环并删除这些项目吗?查询字符串似乎是一个只读集合。如果页面是回发,则querystring数据已过时。发生这种情况时,我想重新清理URL?有什么办法吗?

不幸的是,即使您从服务器端的字符串中删除了项目,当您发送回响应时,浏览器也不会在意——它仍然会显示原始URL

通过发出
响应.redirect()
,可以将浏览器重定向到一个新的URL,并删除参数

另外,考虑将查询更改为使用POST而不是GET,所以参数不会出现在URL中。

< P>这里的一些解决方案:


您应该能够提取值,删除不需要的值,并重新构建查询字符串。然后,只需重定向到具有新值的页面?

如果请求不是回发,则最好将查询字符串的副本分配给页面加载中的页面参数。对副本进行修改,并将其用于任何进一步的操作。如果需要在加载之间保留更改,请将修改后的值指定给隐藏的表单字段

protected void Page_Load(object sender, EventArgs e)
{
    sring saveQueryString;

    if (!IsPostBack)
    {
        saveQueryString = Request.QueryString.ToString(); // join here - I doubt .ToString() will return the expected a=1?b=2?c=3 string

        // modify to your hearts content here...

        hiddenFormField.Text = saveQueryString;
    }
    else
        saveQueryString = Request.Form[hiddenFormField.Id];

}

这在伪代码端比在可执行代码端更重要,但我希望它足够好,以便于说明。

为什么要清理它?为了外表?如果有一个程序性的原因,请考虑在事件处理程序中使用if(.ISPrBACK)来区分原始和后记PGEQUILD()。正如其他受访者正确指出的那样,虽然有一些方法可以做到这一点,但你正在颠覆一种微软有意建立的机制,这种机制是ASP.NET不可或缺的一部分。如果这是一个外观问题,那么按照@womp的建议使用POST vs.GET。