c# - 如何从查询字符串中删除项目以进行重定向?

标签 c# asp.net webforms

在我的基本页面中,我需要从查询字符串中删除一个项目并重定向。我不能使用

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/

相关文章:

c# - WPF:ObservableCollection 内存泄漏

c# - 我希望 wpf DataGrid 的其余部分中的数据是只读的,只有新行应该是可编辑的

c# - Dapper 版本 1.12.0.0 XML 参数不再有效

c# - 快速获取 Expression 方法调用目标的方法

c# - ASP.net连接MySql,无需安装DB

javascript - 我可以控制 javascript/jQuery 事件触发的顺序吗?

asp.net - Windows命令行上的 '/p:'是什么意思

asp.net - 如何根据用户角色限制 asp.net 控制操作?

c# - 为什么表单中的表单在 Internet Explorer 中不起作用

c# - ASP.NET Web 应用程序中的 CAS 策略错误