灵嘉 發表於 2025-4-17 10:41:34

ASP.NET中Onclick与OnClientClick遇到的问题

<p>OnClientClick是在前端执行的代码,也就是在xx.js中<br />Onclick是在后端执行的代码,也就是在xx.cs中</p>
<div class="jb51code"><pre class="brush:xhtml;"> &lt;asp:Button ID="btnGenerateQuote" runat="server" CssClass="button2" Text="&lt;%$resx:xxx%&gt;"
OnClientClick = "return GenerateQuote();" OnClick="btnGenerateQuote_Click" /&gt;
</pre></div>
<p>这里想要实现的功能是:根据OnClientClick的返回值,判断是否执行OnClick中的代码,一开始的想法是</p>
<div class="jb51code"><pre class="brush:csharp;">function GenerateQuote() {
    alertlConfirm(_c.toMessage('提示:是否XXX?'), function () {
      return true;
    }, function () {
      return false;
    });
    return false;
}
</pre></div>
<p>发现根本就没有判断js里的值,直接返回false<br />(最后一行这个return false不写的话,默认是返回true,那么就是不判断,直接执行onclick中的代码)<br />原因:js是单线程,直接执行完语句不会回调</p>
<p>解决方法:添加一个回调函数</p>
<div class="jb51code"><pre class="brush:csharp;">function GenerateQuote() {
    alertlConfirm(_c.toMessage('提示:是否XXX?'), function () {
            //第一个参数是按钮名,第二个参数是Onclick方法
      __doPostBack("btnGenerateQuote", 'btnGenerateQuote_Click');
      return true;
    }, function () {
      return false;
    });
    return false;
}</pre></div>
頁: [1]
查看完整版本: ASP.NET中Onclick与OnClientClick遇到的问题