首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >清除或删除ASP.Net中的查询字符串

清除或删除ASP.Net中的查询字符串
EN

Stack Overflow用户
提问于 2014-01-22 18:18:56
回答 4查看 82.9K关注 0票数 27

我有一个名为'flagEdit‘的QueryString,我想在获取它的值后将其删除。但是当我尝试删除它时,使用

代码语言:javascript
复制
Request.QueryString.Clear();

代码语言:javascript
复制
Request.QueryString.Remove("editFlag");

出现此错误-

System.NotSupportedException:集合是只读的。

因此,我想知道如何在获取其值后删除查询字符串

EN

回答 4

Stack Overflow用户

发布于 2014-01-22 19:39:39

Removing (Deleting) Querystring in ASP.NET

代码语言:javascript
复制
Request.QueryString.Remove("editFlag")

如果执行上述操作,将会出现错误

集合是只读的。

因此,在删除查询字符串之前,我们需要编写以下代码。

试试这条路

代码语言:javascript
复制
PropertyInfo isreadonly = 
  typeof(System.Collections.Specialized.NameValueCollection).GetProperty(
  "IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
// make collection editable
isreadonly.SetValue(this.Request.QueryString, false, null);
// remove
this.Request.QueryString.Remove("editFlag");

您也可以尝试这种方式

代码语言:javascript
复制
    var nvc = HttpUtility.ParseQueryString(Request.Url.Query);
    nvc.Remove("editFlag");
    string url = Request.Url.AbsolutePath + "?" + nvc.ToString();
     Response.Redirect(url);

希望这能有所帮助

票数 47
EN

Stack Overflow用户

发布于 2015-06-03 23:59:57

如果您担心将来页面回发运行的代码与您打算在querystring具有值时运行的代码相同,只需添加一个if(!Page.IsPostBack)条件即可。

票数 14
EN

Stack Overflow用户

发布于 2017-02-16 00:40:30

如果你想清除整个QueryString,这对我很有效:

代码语言:javascript
复制
Response.Redirect(Request.RawUrl.Replace(Request.Url.Query, ""));

我正在清理一个表单,其中有一些字段是由QueryString自动填充的,因此想要解决整个问题。

然而,如果你的目标是一个特定的参数,并想留下剩下的参数,其他人的答案可能会更好。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21280071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档