2010-09-11 4 views
0

Je souhaite effacer un contrôle d'espace réservé sur ma page maître chaque fois qu'une redirection est en cours. Comment puis-je l'obtenir dans codebehind?Masterpage pour détecter la redirection de réponse

Je pourrais vérifier si la dernière URL enregistrée et l'adresse actuelle correspondent, mais c'est vraiment une solution de fortune que je ne veux pas.

Quelque chose comme [si (// Page Redirect détectée) {// faire quelque chose}

+0

Si vous êtes dans le contrôle des Redirects, vous pouvez ajouter un drapeau à la chaîne de requête indiquant que c'est une redirection et que la page principale chèque pour l'argument querystring. –

Répondre

1

Je voudrais simplement jeter un drapeau en session lorsque vous faites une redirection. Vérifiez l'indicateur sur chaque chargement dans la page maître et effacez-le afin que les demandes suivantes ne le détectent pas inutilement. Peut-être pouvez-vous créer une classe d'assistance de réacheminement pour centraliser la responsabilité d'établissement d'un drapeau.

if (Session["RedirectFlag"] != null && (bool)Session["RedirectFlag"]) 
{ 
    // clear your placeholder 
    Session.Remove("RedirectFlag"); // clear the flag 
} 

..

public static class HttpResponseExtension 
{ 
    public static void RedirectWithFlag(this HttpResponse response, string url) 
    { 
     response.RedirectWithFlag(url, true); 
    } 

    public static void RedirectWithFlag(this HttpResponse response, string url, bool endResponse) 
    { 
     System.Web.HttpContext.Current.Session["RedirectFlag"] = true; 
     response.Redirect(url, endResponse); 
    } 
} 
Questions connexes