OnClientClick = true不会触发服务器端代码

rea*_*tek 1 javascript asp.net

我有一个asp.net页面,我想在触发服务器端事件之前显示一个确认对话框.

但是,当用户单击"确定"按钮时,它不会触发服务器端事件.

我已经尝试过发布的其他问题中提到的所有内容.

我认为问题可能是因为我也在使用更新面板:

这是代码:

<asp:ScriptManager runat="server"></asp:ScriptManager>
    <asp:UpdatePanel runat="server" ID="myUpdatePanel" UpdateMode="Conditional">
         <ContentTemplate>
             <asp:Hyperlink runat="server" ID="InstanceHyperlink" Visible="false"></asp:Hyperlink><asp:Button runat="server" Visible="false" ID="DeleteInstance" OnClick="DeleteInstance_Click"  Text="Delete Instance"/>
                 <asp:Button runat="server" OnClientClick="if ( ! createInstanceConfirm()) { return false; }" OnClick="CreateInstance_Click1" ID="CreateInstance" UseSubmitBehavior="false" Text="Create Instance"></asp:Button>
        </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="CreateInstance" EventName="Click"/>
    </Triggers>
</asp:UpdatePanel> 
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

<script type="text/javascript">
    function createInstanceConfirm() 
    {
       UIkit.modal.confirm("You are about to create a new instance", function ()
       { 
           return true; 
       });
    }
</script>
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 6

您正在返回,false但如果您不想取消回发,则必须返回true.

所以代替:

OnClientClick="if ( ! createInstanceConfirm()) { return false; }"
Run Code Online (Sandbox Code Playgroud)

你可以使用它(假设该方法返回true或者false):

OnClientClick="return createInstanceConfirm();"
Run Code Online (Sandbox Code Playgroud)

我之前没有使用过这个组件但你可以试试这个:

function createInstanceConfirm() 
{
   bool confirmed = UIkit.modal.confirm("You are about to create a new instance", function ()
   { 
       return true; 
   });
   return confirmed;
}
Run Code Online (Sandbox Code Playgroud)