OnClick 事件触发但在 .aspx 中不可见

OnClick event firing but not visibly present in the .aspx

我有这两个按钮,代码如下

<div class="row">
<div class="col-xs-6 text-right">
<asp:Button ID="btnAuthorize" runat="server" CssClass="btn btn-primary btn-sm" Text="Authorise" />
</div>

<div class="col-xs-6 text-left">
 <asp:Button ID="btnReject" runat="server" OnClick="btnReject_Click" CssClass="btn btn-primary btn-sm btn-danger" Text="Reject" />
</div>
</div>

在 .vb 文件中我有这些方法。

Protected Sub btnReject_Click(sender As Object, e As EventArgs)
 notify("Succesfully Rejected", "success")
End Sub

Protected Sub btnAuthorize_Click(sender As Object, e As EventArgs) Handles btnAuthorize.Click
  notify("Succesfully Authorized", "success")
End Sub

现在两个按钮都按预期工作,但是 .aspx 页面中的 btnAuthorize 上没有 OnClick 事件
当我在 .aspx 页面

中看不到 OnClick="btnAuthorize_Click" 时,为什么 btnAuthorize 会触发 btnAuthorize_Click

在这两种情况下,您不需要也不想添加 onclick = 标记。事实上,该标记将首先 运行 本地 javaScript 代码然后 运行 您的服务器端代码。

然而,语法错误,甚至不会 运行 在您的网站上 - 至少它不应该。

对于 asp.net 按钮?

标签调用了OnClientClick="MyJavaFunctionName()"

请注意,上面的正确格式是 JS 函数名称后跟“()”

如果您从工具箱中放入 HTML 控件,那么此类控件根本不会调用 vb.net 服务器端代码,因此您使用:

        <input id="Button3" type="button" onclick="MyHello()" value="button" /></form>

所以标签

OnClick="btnReject_Click" 

是错误的,不是必需的。事实上,如果您 运行 那个页面,如果您使用来自 Visual Studio 的本地 II 服务器,您应该会得到一个错误。而实际上onClick是错误的,需要是onclick(全部小写)。

因此,看起来它曾经是一个非 ASP.net 控件,也许您剪切 + 粘贴或编辑了标记。无论哪种方式都是错误的语法,如果您确实设法获得了正确的语法,则该标记是 OnClientClick,并且 JavaScript 函数名称必须在引号下跟一组 ()。

在大多数 asp.net 控件中不允许使用 OnClick。

因此,请删除该标记 - 它的格式不正确,如果您尝试 运行 该页面,IIS Web 服务器可能会报错。

任何 asp.net 按钮?当您从工具箱中拖放,或在编辑器中剪切并粘贴标记时,会自动为您连接一个事件存根,并且您不需要为服务器端按钮单击事件添加任何标签 运行.您不要使用带有 asp.net 控件的标记来连接服务器端事件。

如果您确实使用了 OnClientClick 标签,那么本地浏览器 JavaScript 将首先 运行,然后您的服务器端 vb.net 代码将 运行(如果您有vb 编辑器(服务器端代码)中该按钮的表单单击事件中的任何代码。

如果您确实想要 运行 一些本地 JavaScript,那么您的按钮将如下所示:

<div class="col-xs-6 text-left">
 <asp:Button ID="btnReject" runat="server" OnClientClick="MyHello()" CssClass="btn btn-primary btn-sm btn-danger" Text="Reject" />
</div>
</div>

    <script>
        function MyHello() {
            alert("my hello run client side");
        }
    </script>

如果您执行上述操作,则会弹出一个对话框问候框,然后(如果有)服务器 vb.net 端的代码将 运行。

谢谢大家的帮助。

我看到了 Handles Clause (Visual Basic) 文档 here 我发现有一个 handles 子句在我的 .vb 文件中关于按钮的方法,这将触发 Onclick 事件,即使在 .aspx 文件中没有 OnClick="btnAuthorize_Click" 调用。

因此 .vb 文件中的 Handles btnAuthorize.Click 触发了事件,而 btnReject_Click 没有 handles 子句,因为它正在已在 .aspx 文件中调用。

Protected Sub btnAuthorize_Click(sender As Object, e As EventArgs) Handles btnAuthorize.Click
  notify("Succesfully Authorized", "success")
End Sub