調査を行った後(投稿で親切に回答をマークできませんでした)、このスタックオーバーフローページで遭遇した2つのオプションをテストしました:
最初のオプション (Ahmad Mageed によって提供された) 正常に動作することをテストしました。読みやすさは理解しやすかったです(私はまだasp.netの「トリック」に慣れていないため)
次に、結果を達成するために実際にリダイレクトする必要がないという方法で著しく改善されたアプローチであるアンナカタによる回答が続きました-クエリ文字列が変更されました
いろいろ遊んだ後、私は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のdevelopmetの経験がかなり少ない人にとっては非常に役立つと思うので、私のバージョンの正解として投稿しました。同じソリューションを探している他の人に役立つことを願っています.
私は証明された才能ではないと述べたので、それをさらに改善してください..まだ。