我有一个带有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
)