Enlever les scripts ajoutés par ClientScript.RegisterStartupScript
Dans mon application pour le contrôle de connexion, je suis en train de montrer une fenêtre de dialogue si la connexion a échoué. De cette façon:
protected void EMSLogin_Authenticate(object sender, AuthenticateEventArgs e) {
log.Info("=============INSIDE EMSLogin_Authenticate======");
RadTextBox UserName = EMSLogin.FindControl("UserName") as RadTextBox;
RadTextBox Password = EMSLogin.FindControl("Password") as RadTextBox;
if (Membership.ValidateUser(UserName.Text, Password.Text)) {
FormsAuthentication.RedirectFromLoginPage(UserName.Text, false);
} else {
ClientScript.RegisterStartupScript(typeof(ScriptManager), "CallShowDialog", "showDialog();", true);
}
}
Le JavaScript est:
function showDialog() {
$(document).ready(function () {
$(".jym").dialog("open");
});
}
Maintenant, si la connexion a échoué la boite de dialogue s'affiche. Mais Le problème est que si j'actualise la fenêtre du navigateur, après un échec de la connexion, la boîte de dialogue nouveau ouvert, depuis le $(".jym").dialog("open")
est écrit dans la page. Alors j'ai essayé
protected void Page_Unload(object sender, EventArgs e) {
log.Info("=============INSIDE Page_Unload======");
ClientScript.RegisterStartupScript(typeof(ScriptManager), "CallShowDialog", "", true);
}
Mais pas de chance.
Est-il un moyen pour résoudre ce problème?
Si j'utilise ClientScript.RegisterClientScriptBlock()
cela ne fonctionne pas, je veux dire que le dialogue n'est pas d'ouverture sur l'erreur.
Vous devez vous connecter pour publier un commentaire.
Essayer d'appeler la fonction:
...dans le gestionnaire d'événements Page_Load.
Page_Load se produit avant l'event handler. Vous pouvez vérifier cela en ajoutant le code suivant et en regardant dans le debug/fenêtre de sortie:
Afin d'effacer le script dans le gestionnaire d'événements Page_Load doit effacer toutes les script précédent qui a été chargé.