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

时间:2019-12-24 09:01:29

标签: asp.net vb.net webforms

我有这两个带有以下代码的按钮

<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页中看不到btnAuthorize_Click时,为什么btnAuthorize触发OnClick="btnAuthorize_Click"

2 个答案:

答案 0 :(得分:2)

在两种情况下,您都不需要也不想添加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控件,也许您剪切+粘贴或编辑了标记。无论哪种方式,语法都是错误的,如果您DID设法获得正确的语法,则该标记为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上的代码(如果有)。

答案 1 :(得分:0)

谢谢大家的帮助。

我遇到了 Handles子句(Visual Basic)文档 here,发现我的{中有一个 handles 子句按钮方法上的{1}}文件,即使.aspx文件中没有.vb调用,也会触发Onclick事件。

因此OnClick="btnAuthorize_Click"文件中的此 Handles btnAuthorize.Click 会触发事件,并且.vb没有handles子句,因为它是在{{ 1}}个文件。

btnReject_Click