J'ai une petite classe qui affiche une alerte via Javascript. J'utilise cette classe sur une page qui vérifie si l'utilisateur a entré un code postal valide. Si un code postal valide n'est pas entré, une alerte est affichée et la page est renvoyée à la même page afin de pouvoir la modifier. S'ils entrent un code postal valide, ils sont redirigés vers une autre page. Le problème est que si ils frappent le bouton de retour sur leur navigateur, l'alerte est affichée indépendamment du fait que le code postal est valide ou non.Script d'alerte enregistré appelé sur BrowserBack
Voici le flux:
page d'entrée Zip -> Entrer votre Zip -> Vérifier Zip
si zip valide -> goto overview.aspx sinon zip valide, la page d'entrée zip goto
Sur overview.aspx, si elles frappent le bouton de retour de leur navigateur, l'alerte est affichée. Je ne veux pas que cela arrive. Voici le code que j'ai pour la classe d'alerte qui fonctionne très bien. Et ci-dessous le code qui vérifie et affiche l'alerte lorsque le LinkButton est cliqué.
protected void GotoReview(object sender, EventArgs e) {
if (ValidateZipCode(ZipCode)) {
Response.Redirect(string.Format("~/checkout/overview.aspx?pc={0}&zc={1}",
ProductCode, ZipCode));
}
else {
Alert.Show("The entered zip code is invalid. Please ensure the zip code is a valid zip code.");
}
}
private bool ValidateZipCode(string zip) {
if (zip.Length < 5 || zip.Length > 5) {
return false;
}
if (!Regex.IsMatch(zip, @"^(\d{5}-\d{4})|(\d{5})$")) {
return false;
}
return true;
}
public static class Alert {
public static void Show(string message) {
string cleanMessage = message.Replace("'", "\\'");
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
Page page = HttpContext.Current.CurrentHandler as Page;
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) {
page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script);
}
}
}