2011-11-22 99 views
0

我有点困惑,使用这个脚本,它是如何工作的?OnClick/OnClientClick事件与Asp.Net

这里是我的脚本:

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#<%=TextBox1.ClientID%>').change(function() { 
       $('#various3').attr('href', $(this).val()); 
      }); 


       $("#<%=Button1.ClientID%>").click(function (event) { 
        setTimeout(showStickySuccessToast, 1000); 
        function showStickySuccessToast() { 
         $().toastmessage('showToast', { 
          text: 'Finished taking Screenshot!', 
          sticky: false, 
          position: 'middle-center', 
          type: 'success', 
          closeText: '', 
          close: function() { 

          } 
         }); 
        } 

       })     
     }); 
     </script> 

这是我的按钮:

<a id="various3" href="#"><asp:Button ID="Button1" runat="server" 
    Text="Button" OnClientClick="Button1_Click"/></a> 

这是我的代码背后button1_Click事件:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim NewTh As New Threading.Thread(AddressOf DoIT) 
    NewTh.SetApartmentState(Threading.ApartmentState.STA) 
    NewTh.Start() 
    ImgPreview.ImageUrl = "~/uploads/Sample.jpg" 
End Sub 

现在,如果我按一下按钮它应该打开iframe并显示我能够做的消息。 现在的问题是如何在同一时间调用codebehind中的button1_Click事件。 我已经使用OnClickOnClientClick事件如下所示,但它不工作,我没有得到任何错误。

回答

1

看起来你已经得到的东西向后:

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" /> 

上面的例子假定Button1_Click是后台代码单击事件处理程序。由于您在jQuery中分配客户端点击事件,因此根本不需要使用OnClientClick

编辑

我会检查,以确保验证未与点击intefering。您可以通过在按钮上设置CausesValidation="false"来进行测试。

+0

感谢您的回复如果我使用OnClick它不会启动代码隐藏代码。 – coder

+0

你有代码隐藏的'Button1_Click'方法吗?它是否标记为“受保护”?你重新编译了吗? –

+0

是的,我已经重建,我有一个Button1_Click方法,它受到保护,如上面的代码所示。 – coder

1

Onclick =引发回发,执行服务器事件处理程序。

OnClientClick =引发客户端点击事件,您可以调用JavaScript函数,但您无法直接处理asp事件,尽管在调用javascript函数后会发生回发。

+0

感谢您的不同。 – coder