我有这两个带有以下代码的按钮
<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"
答案 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