我有一个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"];
那样得到该值。但是在显示确认后,它会立即询问响应,显然,用户还没有点击任何内容。
那么,您可以帮助我获得用户确认并根据确认做一些事情吗?
答案 0 :(得分:0)
您必须考虑代码的执行位置和顺序。您无法直接从JavaScript confirm()
对话框中获取值到后面的代码中。您必须在JavaScript中捕获该值,然后将值存储在隐藏字段中,然后启动回发,并从表单中读取该值。
Ususualy如果您想确认,请在点击按钮之后但在回复执行之前确认。如果用户拒绝,通常你想取消回发。您可以通过从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" />