위대한 질문입니다. 나는 대답을 모른다. 나는 이것을 깨끗하게 처리하는 방법을 모르지만, 이벤트를 제거하기 위해 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
이벤트를 교차 게시하는 이유 또는 방법을 모르지만). 여전히 권장하지 않습니다.
참고 : 마스터 페이지를 코딩하는 경우 마스터 페이지 클래스 (Page.PreviousPage
)의 Page
속성에서 PreviousPage
을 참조해야합니다.
출처
2014-06-23 09:00:29
tne