我有一个名为'flagEdit‘的QueryString
,我想在获取它的值后将其删除。但是当我尝试删除它时,使用
Request.QueryString.Clear();
或
Request.QueryString.Remove("editFlag");
出现此错误-
System.NotSupportedException:集合是只读的。
因此,我想知道如何在获取其值后删除查询字符串
发布于 2014-01-22 19:39:39
Removing (Deleting) Querystring in ASP.NET
Request.QueryString.Remove("editFlag")
如果执行上述操作,将会出现错误
集合是只读的。
因此,在删除查询字符串之前,我们需要编写以下代码。
试试这条路
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");
您也可以尝试这种方式
var nvc = HttpUtility.ParseQueryString(Request.Url.Query);
nvc.Remove("editFlag");
string url = Request.Url.AbsolutePath + "?" + nvc.ToString();
Response.Redirect(url);
希望这能有所帮助
发布于 2015-06-03 23:59:57
如果您担心将来页面回发运行的代码与您打算在querystring具有值时运行的代码相同,只需添加一个if(!Page.IsPostBack)条件即可。
发布于 2017-02-16 00:40:30
如果你想清除整个QueryString
,这对我很有效:
Response.Redirect(Request.RawUrl.Replace(Request.Url.Query, ""));
我正在清理一个表单,其中有一些字段是由QueryString
自动填充的,因此想要解决整个问题。
然而,如果你的目标是一个特定的参数,并想留下剩下的参数,其他人的答案可能会更好。
https://stackoverflow.com/questions/21280071
复制相似问题