onclientclick事件出错 - Handles子句需要WithEvents

时间:2013-12-13 13:22:25

标签: asp.net vb.net

我有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

1 个答案:

答案 0 :(得分:2)

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

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

因此,必须在codebehind类(或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-code,可以是js-function。顺便说一下,如果你想阻止来自false的客户端返回OnClientClick的回发:

OnClientClick="return btnClose_ClientClick();" 

(假设btnClose_ClientClick返回bool