我正在尝试仅将 ImageButton 控件用于客户端脚本执行。我可以使用 OnClientClick 属性指定要执行的客户端脚本,但是如何阻止它在每次用户单击它时尝试发布?单击此按钮时没有理由发布。我已将 CausesValidation 设置为 False,但这并不能阻止它发布。
问问题
26565 次
8 回答
20
我知道这个问题已经得到解答,但一个简单的解决方案是从 HTML onclick 方法(即 ASPX OnClientClick 方法)返回 false,例如
<asp:ImageButton ID="ImageNewLink" runat="server"
ImageUrl="~/images/Link.gif" OnClientClick="DoYourStuff(); return false;" />
返回 false 会阻止浏览器向服务器发出请求,也就是停止 .NET 回发。
于 2012-04-19T15:01:03.240 回答
4
这是一种方法,您可以在不与其他控件的回发功能冲突的情况下做到这一点:
像这样定义你的按钮:
<asp:Button runat="server" Text="Button" UseSubmitBehavior="false" OnClientClick="alert('my client script here');my" />
OnClientClick 处理程序中的“my”结尾是别名 asp.net 的 __doPostBack 客户端事件的一种方式,该事件强制回发;我们只是通过不执行与此脚本类似的操作来覆盖该行为:
<script type="text/javascript">
function my__doPostBack(eventTarget, eventArgument) {
//Just swallow the click without postback of the form
}
</script>
编辑:是的,我觉得我需要在一些肮脏的伎俩之后洗个澡,为了让asp.net做我想做的事。
于 2010-04-24T05:20:32.173 回答
2
另一种解决方案是定义一个什么都不做的 PostBackUrl
<asp:imagebutton runat="server" PostBackUrl="javascript:void(0);" .../>
于 2011-10-28T16:44:17.157 回答
1
这对我很有用:
用于OnClientClick
编写脚本并PostBackUrl="javascript:void(0);"
避免回发。
<div class="close_but">
<asp:ImageButton ID="imgbtnEChartZoomClose" runat="server" ImageUrl="images/close.png" OnClientClick="javascript:zoomclosepopup();" PostBackUrl="javascript:void(0);" />
</div>
于 2013-06-14T07:37:10.243 回答
1
<image src="..." onclick="DoYourThing();" />
于 2010-04-24T04:55:46.787 回答
1
使用服务器端图像控件
<asp:Image runat="server" .../>
很确定您可以将客户端onclick
事件添加到其中。
于 2010-04-24T05:05:57.020 回答
1
解决方案 1
<asp:ImageButton ID="btn" runat="server" ImageUrl="~/images/yourimage.jpg"
OnClientClick="return false;" />
或解决方案 2
<asp:ImageButton ID="btn" runat="server" ImageUrl="~/images/yourimage.jpg"
OnClientClick="yourmethod(); return false;" />
另外(解决方案2),你的javascript方法可能是这种形式
<script type="text/javascript">
function yourmethod() {
__doPostBack (__EVENTTARGET,__EVENTARGUMENT); //for example __doPostBack ('idValue',3);
}
</script>
在后面的代码中
protected void Page_Load(object sender, System.EventArgs e)
{
if (this.IsPostBack) {
string eventTarget = this.Request("__EVENTTARGET") == null ? string.Empty : this.Request("__EVENTTARGET");
string eventArgument = this.Request("__EVENTARGUMENT") == null ? string.Empty : this.Request("__EVENTARGUMENT");
}
}
于 2013-06-21T10:11:17.637 回答
0
使用 OnClientClick 编写脚本和 PostBackUrl="javascript:void(0);" 避免回发
于 2016-04-06T06:41:24.400 回答