2010-06-24 5 views
0

Je suis aux prises avec cela pour les 3 derniers jours. J'ai besoin d'appeler le code de serveur asp.net de Javascript quand l'utilisateur ferme le navigateur. J'utilise le code suivant pour accomplir ceci. Dans mon formulaire asp.net j'ai plusieurs contrôles de validation. Même s'il y a des erreurs de validation, lorsque je ferme le formulaire, le code côté serveur fonctionne parfaitement dans ma boîte de développement (windows 7). Mais le même code ne fonctionne pas dans mon environnement de production (serveur Windows).Appel ASP.NET 2.0 Server code du côté de Javascript

Cela a-t-il quelque chose à voir avec le contrôle de validation ou les contrôles de validation. Le contrôle du bouton a Validation de la valeur définie sur false. Donc, même s'il y a une erreur de validation, mon formulaire va encore afficher. Ai-je raison? Je soupçonne que le formulaire n'est pas renvoyé au serveur en cas d'erreur de validation. Mais je désactive tous les contrôles de validation dans le javascript avant d'appeler l'événement click button. Quelqu'un peut-il jeter un peu de lumière sur cette question.

Il existe peu de blogs qui suggèrent d'utiliser JQUERY, AJAX (Pagemethods et script manager).

 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

Vous ne pouvez pas vraiment intercepter les événements de fermeture de navigateur de manière conforme aux normes. – Pierreten

+0

Pouvez-vous être plus élaboré – Kannabiran

+0

Vous devez utiliser AJAX. Fondamentalement, vous essayez de faire un appel côté client à une méthode côté serveur de manière asynchrone. En d'autres termes, il doit être asynchrone, car une fois que l'utilisateur ferme le navigateur, vous ne pouvez plus interrompre l'opération et attendre la fin du code côté serveur. Vous devez vous connecter à l'événement de fermeture du navigateur côté client, puis déclencher un AJAX pour accomplir ce que vous voulez. – RPM1984

Répondre

0

Regardez les liens suivants:

Ils décrivent comment vous pouvez réagir à la fermeture du navigateur en JavaScript. Avec cela, vous pouvez initialiser une requête ajax de JavaScript vers le serveur (avec l'aide de jQuery ou de tout autre framework JavaScript)!

http://www.4guysfromrolla.com/demos/OnBeforeUnloadDemo1.htm (œuvres dans Firefox et IE)

Hope this helps!

Questions connexes