2013-10-23 56 views
5

我有一個asp.net web應用程序。在我的.aspx頁面中,我有一個更新面板,其中我有3 asp:LinkButton,它應該調用後面的c#代碼。問題是onclick不起作用。asp.net的LinkBut​​ton不火

下面是代碼的外觀:

<div id="div1"> 
       <asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
        <ContentTemplate> 
         <ul> 
          <li><asp:LinkButton ID="lnk_1" runat="server" OnClick="lnk1_Click">Link1</asp:LinkButton></li> 
          <li><asp:LinkButton ID="lnk_2" runat="server" OnClick="lnk2_Click">Link2</asp:LinkButton></li> 
          <li><asp:LinkButton ID="lnk_3" runat="server" OnClick="lnk3_Click">Link3</asp:LinkButton></li> 
         </ul> 
<div> some more code here </div> 
</ContentTemplate> 
        <Triggers> 
         <asp:PostBackTrigger ControlID="lnk_1" /> 
         <asp:PostBackTrigger ControlID="lnk_2" /> 
         <asp:PostBackTrigger ControlID="lnk_3" /> 
        </Triggers> 
       </asp:UpdatePanel> 
      </div> 

什麼是錯的代碼?我也嘗試使用AsyncPostBackTrigger,但仍然無法正常工作。

背後的代碼是不是在所有調用。

我也試圖在谷歌搜索,但沒有找到一個解決方案。

回答

5

你非常接近。幾件事:

  • 你的觸發器應該是AsyncPostBackTriggers,就像你說的你試過的。
  • 您的觸發器需要一個事件名稱。
  • 建議:這不會阻止你的活動從射擊,但除非你希望每過帳事件進行回傳,添加的UpdateMode =「有條件」到你的UpdatePanel。

這裏是一個工作示例。

Web窗體 - WebForm1.aspx的:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="AspDotNetStorefront.WebForm1" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title></title> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
      <asp:ScriptManager runat="server"></asp:ScriptManager> 
      <div id="div1"> 
       <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <ul> 
          <li><asp:LinkButton ID="lnk_1" runat="server" OnClick="lnk1_Click">Never clicked</asp:LinkButton></li> 
         </ul> 
        </ContentTemplate> 
        <Triggers> 
         <asp:AsyncPostBackTrigger ControlID="lnk_1" EventName="Click" /> 
        </Triggers> 
       </asp:UpdatePanel> 
      </div>  
     </form> 
    </body> 
</html> 

代碼隱藏 - WebForm1.aspx.cs中:

using System; 

namespace AspDotNetStorefront 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     private static int _clickedCount = 0; 

     protected void lnk1_Click(object sender, EventArgs e) 
     { 
      ++_clickedCount; 
      var suffix = _clickedCount <= 1 ? "time" : "times"; 
      lnk_1.Text = string.Format("Clicked {0} {1}", _clickedCount, suffix); 
     } 
    } 
} 
相關問題