使用updatepanel初始运行良好,但一段时间后不工作

时间:2013-10-25 08:47:09

标签: c# asp.net

我将我的链接按钮放在updatepanel中,并且工作正常 但是,如果我将该页面打开一个小时,然后单击该链接按钮,则不会调用该链接按钮的单击事件。 如果我想要调用该事件,我必须刷新该页面,而不是开始正常工作。

该链接按钮的.cs代码(aspx.cs)是

protected void lnkcontact_Click(object sender, EventArgs e)
{
     Response.Redirect("index.aspx?name=6");  
}

我的设计页面代码(aspx)

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>                            
<asp:LinkButton CssClass="bottom-link" ID="lnkcontact" runat="server" OnClick="lnkcontact_Click">CONTACT</asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>

没有必要编写代码,因为一切正常,唯一的问题是

“如果我在没有任何工作的情况下继续打开该页面,而不是为什么在一段时间后没有调用linkbutton click事件?”

2 个答案:

答案 0 :(得分:2)

问题不在于代码,而在于.net的行为,即您正在使用session和viewstate。而且他们都会在一段时间后摧毁。为了避免让你的页面不使用这两件事,或者你可以做的最简单的事情是放置一个只会回发的计时器,以便会话和viewstate dosent过期。希望这很清楚。

答案 1 :(得分:0)

我们必须做两件事来收集

1&gt;拉特纳说,按照指示行事。

例如:

 <asp:UpdatePanel ID="UpdatePanel10" runat="server">
  <ContentTemplate>
   <asp:Timer ID="Timer1" runat="server" Interval="180000">
  </asp:Timer>
 </ContentTemplate>
</asp:UpdatePanel>

2&gt;对要在updatepanel中单击的按钮进行异步回发

例如:

 <asp:UpdatePanel ID="UpdatePanel15" runat="server" UpdateMode="Conditional">
 <ContentTemplate>
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="" EventName="" />//this is asynchronouspostback
  </Triggers>
</asp:UpdatePanel>

这样就可以将表单代码收集为

 <asp:UpdatePanel ID="UpdatePanel10" runat="server">
  <ContentTemplate>
   <asp:Timer ID="Timer1" runat="server" Interval="180000">
  </asp:Timer>
 </ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel15" runat="server" UpdateMode="Conditional">
 <ContentTemplate>
 <asp:Button ID="btn" runat="server" Text="Upload File" OnClick="btn_upload_file_Click" />
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="btn" EventName="Click" />//this is asynchronouspostback
  </Triggers>
</asp:UpdatePanel>