C#/ASP-web,ASP:在客户端执行复选框消息框,如果是,则运行服务器端代码

C#/ASP web, ASP:Checkbox to do messagebox on client side, if yes run server side code

本文关键字:如果 运行 代码 服务器端 消息 执行 ASP ASP-web 客户端 复选框      更新时间:2024-01-30

如果在某个地方得到了答案,但我找不到特定问题的答案,我深表歉意。

我有一个asp对象:

 <asp:CheckBox ID="chkRemove"  runat="server" Checked='<%#Convert.ToBoolean(Eval("CommonWord")) %>' OnCheckedChanged
= "OnCheckedChanged_CommonWord" AutoPostBack="true"  />

基本上,我想显示一个消息框,询问是否可以删除,如果选择了"否"或"取消",则不要进行回发(或不运行任何服务器端代码),如果是,则运行函数"OnCheckedChanged_CommonWord"。

我试着做了一个弹出的javascript Confirm()调用,但如果我按yes,C#服务器端代码就不会运行("OnCheckedChanged_CommonWord")——"no"或"cancel"非常有效,因为它不会回发。

附言:由于服务器限制,请不要使用AJAX。

复选框控件实际上缺少任何类型的OnClientCheckChanged事件,这些事件可用于管理基于客户端事件的PostBack是否应该发生(如OnClientClick等)。

但是,您应该能够使用onclick属性来实现这一点,该属性具有通过手动调用来管理默认PostBack的功能:

<asp:CheckBox ID="chkRemove" runat="server"  
       Checked='<%#Convert.ToBoolean(Eval("CommonWord")) %>' 
       OnCheckedChanged="OnCheckedChanged_CommonWord" 
       AutoPostBack="true"
       onclick='return OnClientCheckChanged("Are you sure you want to do this?",this);' />
<script>
    function OnClientCheckChanged(prompt,source) {
        if (confirm(prompt)){
            __doPostBack("'" + source.id + "'", '');
            return true;
        }
        else {
            return false;
        }
    }
</script>

当复选框被实际点击时,它将触发confirm()提示,并根据结果,它将要么触发显式PostBack(通过讨厌的__doPostBack()调用),要么什么都不做。

我不是__doPostBack()调用的超级粉丝,但这似乎是一个合适的解决方案。