有没有办法从asp.net中的Querystring中删除项目?

时间:2009-09-30 17:42:06

标签: c# asp.net query-string

如果我有http://mysite.com?abc=123&def=345,我是否可以在页面加载时循环并删除这些项目?看起来Querystring是一个只读集合。如果页面是回发,则查询字符串数据是陈旧的。我想在发生这种情况时清理URL吗?关于如何做到这一点的任何想法?

3 个答案:

答案 0 :(得分:2)

不幸的是,即使您从服务器端的字符串中删除了项目,当您发回响应时,浏览器也不会关心 - 它仍然会将原始URL拖延。

您可以做的最好的事情是通过发布Response.Redirect()将浏览器重定向到删除参数的新网址。

否则,请考虑将查询更改为使用POST而不是GET,因此参数不会显示在URL中。

答案 1 :(得分:0)

这里有一些解决方案:

How can i remove item from querystring in asp.net using c#?

Outputing a manipulated QueryString in c#

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

答案 2 :(得分:0)

如果请求不是回发,那么将pageString的副本分配给page_load中的页面参数可能更明智。对副本进行修改,并将其用于任何进一步的操作。如果需要在加载之间保留更改,请将修改后的值分配给隐藏的表单字段。

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];

}

在伪代码端比可执行文件更多,但我希望它足以用于说明目的。