我有一个表单(mainpage.aspx),其上有一个名为'取消'的按钮。这是按钮的代码:
<asp:LinkButton ID="btnCancel" runat="server" Text="Cancel" CssClass="btn btn-default" OnClick="btnCancel_Click" />
和被调用函数
protected void btnCancel_Click(object sender, EventArgs e)
{
Response.Redirect("EventList.aspx");
}
正如您所看到的,按钮的作用很简单。只需转到另一页。但似乎在这里并没有发生。每次单击“取消”按钮时,首先会尝试加载代码
Response.Redirect("EventList.aspx");
但不知怎的,它将尝试执行以下代码:
if (hdnEventId.Value != "" && hdnEventId.Value != "0")
{
LoadEvent();
}
我知道这是因为我在Response.Redirect上放了一个断点(&#34; EventList.aspx&#34;);然后我进入上面的代码
顺便说一句,上面的代码位于
内protected void Page_Load(object sender, EventArgs e)
在mainpage.aspx.cs文件中
答案 0 :(得分:1)
这是因为Page_Load
在任何回发时被调用,而您实际上是通过点击取消进行回发。解决方案是将非回发特定代码包装在IsPostBack
检查中:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (hdnEventId.Value != "" && hdnEventId.Value != "0")
{
LoadEvent();
}
}
}