2015-04-15 65 views
0

這是我sciprt,它顯示一個消息框帶有「確定」和「取消」按鈕如何立即調用javascript函數從VB代碼

<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> 

在我的節目我跑一查詢,如果沒有結果的話,我這顯示「對話框」複選框

我要調用的函數獲得查詢結果,但我當前的代碼後,似乎一切,而不是立即之後要運行它。

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 

回答

2

對我來說,這個請求通常代表對發生的事情的誤解。當你的VB.Net代碼運行時,javascript 不存在。所有服務器事件處理程序導致完整回發。這意味着整個頁面是從頭開始重新創建的。這裏的VB.Net代碼是生成全新HTML文檔的過程的一部分。這將涉及到整個頁面生命週期,包括您的服務器的Page_Load代碼。當引發事件時,在瀏覽器中已經呈現的任何HTML是破壞讓位給您迴應,以一個全新的HTTP請求。

如果你想這對不同的反應,你需要建立考慮到這一點你的整個HTTP響應。這意味着要麼改變從一開始就調用事件的方式(調用WebMethod或其他Ajax請求),要麼設置響應以在JavaScript頁面加載事件中調用您的confirm方法。

+0

這似乎是在Web窗體和VB.NET中的世界共同的根本誤解。 –