私が今直面している素晴らしい質問です。答えもわかりません。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
のプロパティから参照する必要があります。Page
Page.PreviousPage