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
}
Vous ne pouvez pas vraiment intercepter les événements de fermeture de navigateur de manière conforme aux normes. – Pierreten
Pouvez-vous être plus élaboré – Kannabiran
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