2010-03-01 11 views
1

comment afficher la Alertbox d'abord, puis fermez la sessiond'alerte

if (machineID.Count != 0) 
      { 

       checkMachineGrpState(machineID); 
     else 
       { 
        Response.Write("<script>alert('You are being logged out')</script>"); 

        GoSignOut(); 
       } 
    } 

private void GoSignout() 
    { 
     FormsAuthentication.SignOut(); 
     Session.Abandon(); 
     Response.Redirect("~/Default.aspx"); 
    } 

ici si je n'appeler la fonction GosignOut je peux voir la zone d'alerte, mais le moment je mets appeler le signout il ne me montre pas le Alertbox et les signes simplement

donc je pensais s'il y a un moyen que je peux voir le Alertbox d'abord, puis quand j'appuyez sur OK, il devrait appeler signout fonction dans mon code derrière ... grâce

+0

Il semble que vous n'ayez pas une idée précise de l'ensemble de la relation client/serveur ou du fonctionnement des formulaires Web ASP.NET. Je suggère vraiment de regarder comment fonctionnent les Webforms, comment le code derrière entre en jeu dans le cycle de vie de la page web asp.net et d'autres sujets similaires. Après cela, ce genre de question sera vraiment facile pour vous. –

Répondre

1

utiliser la clientclick du bouton côté serveur qui appelle ce code de déconnexion, t lorsque le retour est vrai

par exemple.

<asp:Button id="button1" runat="server" OnClientClick="javascript:alert('You are being logged out');return true;" /> 

éditez re pensé ce que vous voulez. essayez, je ne l'ai pas testé avec l'utilisation de Session.Abandon et la signOut (qui peut vous forcer à la page de connexion)

if (machineID.Count != 0) 
      { 

       checkMachineGrpState(machineID); 
     else 
       { 
        GoSignOut(); 
        Page.ClientScript.RegisterStartupScript(this.GetType(), "Redirect", "<script>alert('You are being logged out');window.location.href='" + ResolveUrl("~/Default.aspx") + "';</script>"); 
       } 
    } 

private void GoSignout() 
    { 
     FormsAuthentication.SignOut(); 
     Session.Abandon(); 
    } 

si vous avez besoin pour permettre la redirection d'aller à une autre page que la connexion page (qui est forcée en raison de la SignOut), vous pouvez ajouter quelque chose comme ci-dessous à vous web.config. Je ne suis pas 100% sûr de vouloir permettre qu'il en permettrait aucun utilisateur authentifié d'accéder à la page

<location path="whateverpage.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
+0

comment puis-je appeler cela de mon code derrière ... comme de mon état d'autre – user175084

+0

apprécier l'aide – user175084

+0

ahh, n'a pas vu l'autre, ce qui déclenche le code que vous montrez, est-ce un clic de bouton? et si oui, pourquoi ne seraient-ils pas déconnectés? – Pharabus

1

Response.write va écrire des choses vers le navigateur et lorsque le navigateur charge la page, il analyser que données (rendre html et exécuter js). Aucune autre communication ou rétroaction n'est présentée au serveur (qui est l'endroit où s'exécute votre code asp.net webforms) sans que le navigateur contacte le serveur via un GET ou un POST (soumission de formulaire, lien, ajax). Ce qui se passe, c'est que vous dirigez la sortie vers le client, mais que vous appelez immédiatement Response.Redirect pour que le client n'obtienne jamais votre sortie. Au lieu de cela, il redirige juste immédiatement et affiche ensuite la page default.aspx. Ce que vous pourriez faire est encore de faire la redirection mais passer des données au client (la chaîne de requête serait une façon de le faire) et alors la page default.aspx serait à la recherche de ces données. Si ces données sont trouvées, cela complétera toute action nécessaire. Dans votre cas, vous voulez qu'il alerter l'utilisateur. Pour ce faire, redirigez-vous vers "~/Default.aspx? Alert = 1". Pour cela, vous pouvez le faire en redirigeant vers "~/Default.aspx? Alert = 1". Dans default.aspx, sur pageload, il se tournerait vers la chaîne de requête et verrait si la clé d'alerte est là avec la valeur 1. Si c'était le cas, elle effectuerait votre alerte.