私が今直面している素晴らしい質問です。答えもわかりません。Request.Formデータを変更してイベントを削除すると思いますが、これをきれいに行う方法はわかりません。
回避策として、同様に保持されている でガード フラグを使用Context.Itemsします。
protected void rbThemes_SelectedIndexChanged(object sender, EventArgs e)
{
if (IsSecondPass()) return;
Server.Transfer(Request.FilePath, true);
}
private bool IsSecondPass()
{
const string key = "SECOND_PASS_GUARD";
if (Context.Items[key] == null)
{
Context.Items[key] = new object();
return false;
}
else
{
Context.Items.Remove(key);
return true;
}
}
これはお勧めしませんが、うまくいきます。(メソッド名も、副作用があるためあまり選ばれていません。)
より短い方法もあります:
protected void rbThemes_SelectedIndexChanged(object sender, EventArgs e)
{
if (PreviousPage != null) return;
Server.Transfer(Request.FilePath, true);
}
SelectedIndexChanged他の種類のクロスページ投稿を行っても、望ましくない影響がないことに注意してください (ただし、別のページからイベントをクロス投稿する理由や方法はわかりません)。まだお勧めしません。
注: マスター ページをコーディングしている場合は、マスター ページ クラス ( )PreviousPageのプロパティから参照する必要があります。PagePage.PreviousPage