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

时间:2016-04-06 19:59:33

标签: javascript c# jquery asp.net .net

如果在某个地方得到回答,我很抱歉,但我无法找到我特定问题的答案。

我有一个asp对象:

var listingNum = prompt("Listing numbers").split(" ");

logIn = function(){
    if(document.readyState === "complete"){
        document.getElementById('SignInAsMemberLinkHeader').click();
    }
};

for(i = 0; i < listingNum.length; i++){
 window.open("http://www.website.com" + listingNum[i],"_self");

    setInterval(logIn(), 4000);
};

基本上我想显示一个消息框询问是否可以删除,如果没有选择取消或取消,不执行回发(或不运行任何服务器端代码),如果是,则运行该功能“OnCheckedChanged_CommonWord”。

我试着弹出一个javascript Confirm()调用,但是如果按是,则C#服务器端代码不运行(“OnCheckedChanged_CommonWord”)“no”或“cancel”完全正常,因为它没有回发。

P.S。由于我的服务器限制,请不要使用AJAX。

1 个答案:

答案 0 :(得分:0)

Checkbox控件实际上缺少任何类型的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>

当实际点击CheckBox时,它会触发confirm()提示,并根据结果触发显式PostBack(通过令人讨厌的__doPostBack()来电或赢得什么都不做。

我不是__doPostBack()电话的忠实粉丝,但这似乎是一个合适的解决方案。