如果我有http://mysite.com?abc=123&def=345,我是否可以在页面加载时循环并删除这些项目?看起来Querystring是一个只读集合。如果页面是回发,则查询字符串数据是陈旧的。我想在发生这种情况时清理URL吗?关于如何做到这一点的任何想法?
答案 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];
}
在伪代码端比可执行文件更多,但我希望它足以用于说明目的。