2015-02-23 53 views
0

我有一个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

您必须考虑代码的执行顺序和顺序。您无法直接从JavaScript对话框中获取该值到后面的代码中。您必须在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" /> 
+0

问题是你粘贴的代码在'.aspx'文件中,我需要向用户显示后端的一些数据,我不知道我是否可以连接到数据库,执行查询,验证结果,并在前端用户的确认对话框中显示消息 – 2015-02-23 15:49:13

+0

@YerkoPalma因此在'Page_Load'中加载来自后端的数据。为什么你要验证查询的结果呢?首先,您不应该将不好的数据插入到数据库中。 – mason 2015-02-23 15:52:15

+0

嗯,我想从一开始就使用验证过的数据,但我正在处理一个旧的数据库,在需要进行任何验证之前数据已经存储。此外,是一个大量的数据,所以我不知道从开始加载它是否有效。 – 2015-02-23 15:58:26