在我进行研究之后(我无法在我的帖子中标记任何答案)然后我测试了我在这个 Stack Overflow Page中遇到的两个选项:
第一个选项(由 Ahmad Mageed 提供)我已经测试过可以正常工作。并且可读性很容易理解(因为我对 asp.net 'tricks'仍然很陌生)
然后跟着 annakata 的回答,这是一种显着改进的方法,您实际上不必重定向即可获得结果 - 查询字符串已修改
在玩耍之后,我决定遵循annakata的方法并制作一个辅助方法,该方法也使用带有修改后的 QueryString 参数和值的 redirerion 选项。
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 developmentmet 方面经验相当少的人很有帮助,所以我将它作为我的正确答案版本发布,正如我所见。我希望它能帮助寻求相同解决方案的其他人。
随意进一步改进它,正如我提到的那样,我还不是一个成熟的人才。