Большой вопрос, который я столкнулся прямо сейчас. Я тоже не знаю ответа, я бы предположил, что он изменит данные 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
).