如何获取客户端确认框值以进行服务器端操作?

Posted

技术标签:

【中文标题】如何获取客户端确认框值以进行服务器端操作?【英文标题】:how to get client side confirm box value to make server side operations? 【发布时间】:2012-07-31 13:34:08 【问题描述】:

我正在使用客户端脚本来确认消息框,如下所示

 string script = "fadeScript";
                ScriptManager.RegisterClientScriptBlock(this.Page, script.GetType(), "Script", "Closewindow();", true);

java脚本函数:

<script type="text/javascript">
    function Closewindow() 
        var Result = confirm("Are you sure want to delete?");
        alert(Result);
        if (Result == true) 
            document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box 
            alert(txtConfirmresult.value);
        return true;
        
    else 
    
        document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box 
        alert('BYE');
         return false;
        


</script>

如果返回true,我想使用.cs 文件中的脚本返回值来激发程序。如果它返回 false 我必须只停留在该特定页面上。请帮我解决这个问题

【问题讨论】:

【参考方案1】:

您可以使用__doPostBack(target, argument) 回发到服务器。然后,您可以评估发布数据中的__EVENTTARGET__EVENTARGUMENT,以查看您发回的内容并适当地执行逻辑。 Here is a link that provides a little more in depth information.

一个简单的例子:

脚本/客户端:

<script type="text/javascript">
    function Closewindow() 
        var Result = confirm("Are you sure want to delete?");
        alert(Result);
        if (Result == true) 
            var txtConfirmResult = document.getElementById('txtConfirmresult');
            txtConfirmResult.value = Result;//assigning to hidden text box 
            alert(txtConfirmresult.value); //displaying for debug purposes
            __doPostBack( 'txtConfirmresult', Result ); //sending back to server.
        return true;
        
    else 
    
        document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box 
        alert('BYE');
         return false;
        

C#

    protected void Page_Load(object sender, EventArgs e)
    
        string target =  Request["__EVENTTARGET"];
        string argument = Request["__EVENTARGUMENT"];

        if (target != null && target.Equals( "txtConfirmresult" ) )
        
             this.DoSomeGreatServerSideProcessing(argument);
        
    

已更新以添加更正确的变量名称,但假设您的脚本正在运行,则应该可以与您现有的代码库一起使用。我会非常小心地使用 txtConfirmresult 作为您的 ID,因为只有在文本框上未设置 runat="server" 时才有效。如果是这种情况,ID 将被添加到表示容器层次结构的前面。

我建议你很好地命名你的“回调”,例如:

脚本/客户端:

<script type="text/javascript">
    function Closewindow() 
        var Result = confirm("Are you sure want to delete?");
        document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box 
        if (Result) 

            __doPostBack( 'UserConfirmedFormSubmission', "CloseWindow" ); //sending back to server.
            return true;
        
        else 
         
           return false;
        

C#

    protected void Page_Load(object sender, EventArgs e)
    
        string target = Request["__EVENTTARGET"];
        string argument = Request["__EVENTARGUMENT"];

        if (!string.IsNullOrEmpty(target) && target.Equals("UserConfirmedFormSubmission"))
        
             if ( !string.IsNullOrEmpty(argument) && argument.equals("CloseWindow"))
             
                this.HandleUserRequestedCloseWinow();
             
        
    

【讨论】:

感谢 Torres 的回复,你能用一个例子解释一下如何使用这些 您能提供更多信息吗?你想做什么?您是否可以提出后续问题并链接(如果它不相关)或更新您当前的问题以包含您正在使用的点击事件处理程序代码?

以上是关于如何获取客户端确认框值以进行服务器端操作?的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 对 Wordpress 数据库进行服务器端操作

SVN如何使用

ceph 部署mds文件系统

exportfs命令,ftp介绍,使用vsftpd搭建ftp

WCF 服务如何成为通信渠道?

NFS服务端安装配置