这是我的sciprt,它会显示一个消息框,其中包含' Ok'和'取消'按钮
<script type="text/javascript"> function Confirm() {
var confirm_value = document.createElement('INPUT');
confirm_value.type = 'hidden';
confirm_value.name = 'confirm_value';
if (confirm('Continue?')) {
confirm_value.value = 'Yes';
} else {
confirm_value.value = 'No';}
document.forms[0].appendChild(confirm_value);} </script>
在我的程序中我运行查询,如果没有结果,那么我显示这个&#34;对话框&#34;框
我想在获取查询结果后立即调用该函数,但我的当前代码似乎是在所有内容之后运行它而不是立即执行。
If reader.read = false then
If Not Page.ClientScript.IsStartupScriptRegistered(Me.GetType(), "alertscript") Then
Page.ClientScript.RegisterStartupScript(Me.GetType(), "alertscript", "Confirm();", True)
End if
Dim confirmValue As String = Request.Form("confirm_value")
If confirmValue = "Yes" Then
'Do stuff here
End if
End if
答案 0 :(得分:2)
对我来说,这个要求通常代表了对正在发生的事情的误解。当您的VB.Net代码运行时,javascript 不存在。所有服务器事件处理程序都会生成完整回发。这意味着从头开始重新创建整个页面。这里的VB.Net代码是生成全新HTML文档的过程的一部分。这将涉及整个页面生命周期,包括您的服务器的Page_Load代码。引发事件时,已在浏览器中呈现的任何html 已销毁,以便为您对全新HTTP请求的响应让路。
如果您希望以不同的方式做出响应,则需要在构建整个HTTP响应时考虑到这一点。这意味着要么从一开始就改变事件的引发方式(调用WebMethod或其他ajax请求),要么设置你的响应以在javascript页面加载事件中调用你的confirm方法。