Javascript阻止服务器控件执行服务器端代码的问题

通过Javascript在客户端执行一定的验证然后再决定是否执行服务器端代码。这是一个很常用的功能。

但是为此我花费了几个小时,才完全弄清楚。

一般来说Javascript函数返回False,却服务器控件不会继续执行服务器端代码。

一开始我这样写:

<script type="text/javascript">
        function a() {

            if (confirm("是否充许执行客户端代码?")) {

                return true;
            }
            else {
                return false;
            }   

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button"
            onclick="Button1_Click" OnClientClick="a()"/>
    </div>
    </form>
</body>

无论怎样,服务器端代码还是照样执行。

后来我把上面红色的那部份换成了:

OnClientClick="return a()"

成功了。

这里的关键是Return这个关键字。没写它无论如何都不会成功。

在后台程序中这样写也是可以的:

this.Button1.Attributes.Add("onclick", "return a()");

原文地址:https://www.cnblogs.com/blogzys/p/2606786.html