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
我有这两个按钮,代码如下
<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