我现在面临的好问题。我也不知道答案,我想有人会修改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
) 上的属性中引用。