错误onclientclick事件-Hands子句需要WithEvents



我有一个带有onclientclick事件的关闭按钮,它给了我这个错误。它在某些页面上有效,在其他页面上无效。我不明白为什么。代码页中的Handles后面有一条蓝色下划线。

<asp:Button ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" CssClass="btnclass" />
<asp:Button ID="btnClose" runat="server" Text="Close" CssClass="btnclass" OnClientClick="btnClose_Click()" />
Protected Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
    Me.Dispose()
    Response.Redirect("~/SearchForm.aspx", False)
End Sub

OnClientClick是当您单击客户端上的按钮时应该执行的javascript代码。但是您正在处理Button.Click-事件,它是一个服务器端事件。

因此,这个按钮需要用WithEvents(在VB.NET中)创建,如果在设计器中添加按钮,就会自动创建。

因此,在codeehind类(或aspx.designer.vb文件)中一定有这样的地方:

Dim WithEvents btnClose As New Button

您也可以在aspx页面上添加事件处理程序,而不是通过Handles:

<asp:Button ID="btnClose" runat="server" Text="Close" CssClass="btnclass" 
    OnClick="btnClose_Click" 
    OnClientClick="btnClose_ClientClick()" />

注意,btnClose_ClientClick是js代码,可以是js函数。顺便说一句,如果你想防止从客户端回发从OnClientClick:返回false

OnClientClick="return btnClose_ClientClick();" 

(假定btnClose_ClientClick返回bool

最新更新