在我进行研究之后(我无法在我的帖子中标记任何友好给出的答案)
然后我测试了我在this Stack Overflow Page 中遇到的两个选项:
第一个选项(由 Ahmad Mageed 给出)我已经测试过可以正常工作。
并且可读性很容易理解(因为我对 asp.net 'tricks'仍然很陌生)
然后按照答案
anakata 以您的方式显着改进了方法
实际上不必重定向即可获得结果 - 查询字符串已修改
在玩了之后,我决定遵循annakatas 的方法
并制作一个使用 redirerion 选项的辅助方法
带有修改的 QueryString 参数和值。
public void QuerStrModify(string CurrQS_ParamName, string NewQs_paramName, string NewPar_Value, bool redirectWithNewQuerySettings = false)
{
// reflect to readonly property
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(CurrQS_ParamName);
// modify
this.Request.QueryString.Set(NewQs_paramName, NewPar_Value);
// make collection readonly again
isReadOnly.SetValue(this.Request.QueryString, true, null);
string FullUrl = Request.Url.AbsolutePath;
if (redirectWithNewQuerySettings)
{
Response.Redirect(string.Join("?", FullUrl, this.Request.QueryString));
}
}
我发现它对那些在 asp.net 开发方面经验相当少的人很有帮助
所以我把它发布为我的正确答案版本,正如我所见。
我希望它能帮助寻求相同解决方案的其他人。
请随意进一步改进它,正如我提到的那样,我还不是一个成熟的人才。