【问题标题】:How to handle client-side confirm in code behind?如何在后面的代码中处理客户端确认?
【发布时间】:2015-02-23 14:44:22
【问题描述】:

我有一个 vb.net 项目,我需要要求用户确认某些操作。我的问题是,现在我可以向用户显示确认对话框,但我无法在后面的代码中得到响应。基于this post我可以显示确认对话框并根据响应做一些事情,但该解决方案的问题是我需要在对话框中显示来自数据库的数据列表,因此必须处理javascript代码,也来自代码隐藏。

这是我显示确认对话框的代码

'myPage.aspx.vb
Private Sub ConfirmBox(ByVal message As String)
    Dim sb As New System.Text.StringBuilder()
    sb.Append("<script type = 'text/javascript'>")
    sb.Append("window.onload=function(){")
    sb.Append("var confirm_value = document.createElement(""INPUT"");")
    sb.Append("confirm_value.type = ""hidden"";")
    sb.Append("confirm_value.name = ""confirm_value"";")
    sb.Append("if (confirm("" " & message & " "")) {")
    sb.Append("confirm_value.value = ""Yes"";")
    sb.Append("} else {")
    sb.Append("confirm_value.value = ""No"";")
    sb.Append("}")
    sb.Append("document.forms[0].appendChild(confirm_value);")
    sb.Append("};")
    sb.Append("</script>")
    ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert",   sb.ToString())
End Sub

显示对话框,并根据用户单击插入一个隐藏输入,其中包含我要检索的值,我可以像 string confirmValue = Request.Form["confirm_value"]; 那样获取该值。但是在显示确认后,它会立即要求响应,显然,用户还没有点击任何东西。

那么,您能帮我获得用户确认并根据该确认做一些事情吗?

【问题讨论】:

    标签: javascript asp.net vb.net code-behind confirm


    【解决方案1】:

    您必须考虑代码在哪里执行以及以什么顺序执行。您不能直接将 JavaScript confirm() 对话框中的值获取到后面的代码中。您必须在 JavaScript 中捕获该值,然后将该值存储在隐藏字段中,然后启动回发,并从表单中读取该值。

    如果您想确认,通常是在单击按钮之后但在执行回发之前。如果用户拒绝,您通常希望取消回发。您可以通过从OnClientClick 属性返回一个值来轻松完成此操作。返回值 false 将在回发开始之前取消回发。

    <asp:Button runat="server" id="Btn1" OnClick="Btn1_Click" OnClientClick="return confirm('Are you sure you want to do this?')" Text="Click Me" />
    

    【讨论】:

    • 问题是你粘贴的代码在.aspx文件里,我需要给用户看一些后端的数据,不知道能不能连接上数据库,进行查询,验证结果,并在前端用户的确认对话框消息中显示它
    • @YerkoPalma 所以从Page_Load 的后端加载数据。你为什么要验证查询的结果呢?首先,您不应该将不良数据插入数据库。
    • 好吧,我想从一开始就使用经过验证的数据,但我正在使用一个旧数据库,在需要任何验证之前就存储了数据。还有就是数据量很大,不知道一开始就加载会不会有效率。
    • 检查并更新您的所有数据,使其有效。它应该是一个一次性的过程。然后只存储将来的有效数据。现在,当您的页面加载时,验证所有必要的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 2021-09-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多