2010-06-24 84 views
0

過去3天我一直在爲此付出努力。當用戶關閉瀏覽器時,我需要從Javascript調用asp.net serverside代碼。我正在使用下面的代碼來完成此操作。在我的asp.net表單中,我有各種驗證控件。即使存在一些驗證錯誤,當我關閉表單時,服務器端代碼在我的開發框(Windows 7)中完美工作。但相同的代碼不適用於我的生產環境(Windows服務器)。從Javascript調用ASP.NET 2.0服務器端代碼

它是否與驗證摘要或驗證控件有關。按鈕控件導致驗證設置爲false。所以即使存在驗證錯誤,我的表單也會回傳。我對麼?我懷疑當發生驗證錯誤時,表單不會返回到服務器。但是我在調​​用按鈕單擊事件之前禁用了JavaScript中的所有驗證控件。有人可以在這個問題上提出一些看法。

有幾個博客暗示使用JQUERY,AJAX(Pagemethods和腳本管理器)。

 function ConfirmClose(e) { 

     var evtobj = window.event ? event : e; 
     if (evtobj == e) { 
      //firefox 
      if (!evtobj.clientY) { 
       evtobj.returnValue = message; 
      } 
     } 
     else { 
      //IE 
      if (evtobj.clientY < 0) { 
       DisablePageValidators(); 
       document.getElementById('<%# buttonBrowserCloseClick.ClientID %>').click(); 
      } 
     } 
    } 

function DisablePageValidators() { 
     if ((typeof (Page_Validators) != "undefined") && (Page_Validators != null)) { 
      var i; 
      for (i = 0; i < Page_Validators.length; i++) { 
       ValidatorEnable(Page_Validators[i], false); 
      } 
     } 
    } 


//HTML 
<div style="display:none" > 
    <asp:Button ID="buttonBrowserCloseClick" runat="server" 
     onclick="buttonBrowserCloseClick_Click" Text="Button" 
     Width="141px" CausesValidation="False" /> 


//Server Code 
protected void buttonBrowserCloseClick_Click(object sender, EventArgs e) 
{ 
    //Some C# code goes here 
} 
+0

你不能以任何符合標準的方式來捕捉瀏覽器關閉事件。 – Pierreten 2010-06-24 05:32:04

+0

你可以更詳細地 – Kannabiran 2010-06-24 06:50:00

+0

你需要使用AJAX。基本上,你試圖以異步方式對服務器端方法進行客戶端調用。換句話說,它需要是異步的,因爲在用戶關閉瀏覽器之後 - 你無法神奇地「停止」操作並等待你的服務器端代碼完成。你需要鉤入客戶端瀏覽器關閉事件,然後發射一些AJAX來完成你想要的。 – RPM1984 2010-06-25 01:18:19

回答

0

請看下面的鏈接:

他們描述瞭如何在JavaScript的瀏覽器關閉反應。有了這個,你可以初始化一個JavaScript到服務器的ajax請求(在jQuery或任何其他JavaScript框架的幫助下)!

http://www.4guysfromrolla.com/demos/OnBeforeUnloadDemo1.htm(在Firefox和IE的作品)

希望這有助於!

相關問題