在我的基本页面中,我需要从查询字符串中删除一个项目并重定向。我不能使用
Request.QueryString.Remove("foo")
因为集合是只读的。有没有办法在不遍历集合并重新构建它的情况下获取查询字符串(除了那一项)?
最佳答案
您可以通过处理原始查询字符串的副本来避免触及它。然后,您可以将页面重定向到包含修改后的查询字符串的网址,如下所示:
var nvc = new NameValueCollection();
nvc.Add(HttpUtility.ParseQueryString(Request.Url.Query));
nvc.Remove("foo");
string url = Request.Url.AbsolutePath;
for (int i = 0; i < nvc.Count; i++)
url += string.Format("{0}{1}={2}", (i == 0 ? "?" : "&"), nvc.Keys[i], nvc[i]);
Response.Redirect(url);
更新:
原来我们可以像这样简化代码:
var nvc = HttpUtility.ParseQueryString(Request.Url.Query);
nvc.Remove("foo");
string url = Request.Url.AbsolutePath + "?" + nvc.ToString();
Response.Redirect(url);
关于c# - 如何从查询字符串中删除项目以进行重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51964/