Question

Puis-je définir une sorte de variable globale pour la longueur d'une seule requête, afin que tous les contrôles de la page puissent y répondre sans avoir à la transmettre à chacun d'eux?

Par exemple, si une personne clique sur le bouton Enregistrer de ma page maître, pourrais-je définir quelque chose pour que chaque contrôle utilisateur de ma page puisse avoir un Page_Load tel que:

protected void Page_Load(object sender, EventArgs e)
{
    if (isSaving) // isSaving is a global variable
    {
        saveData();  // save myself
    }
    loadData();
}

Cela semble beaucoup plus simple que de demander à un délégué de la page principale d'appeler la fonction de sauvegarde de la page, qui appelle ensuite UC1.saveData () à chaque contrôle UserControl, même si je sais que la réflexion est mieux orientée objet.

Était-ce utile?

La solution

Oui, vous pouvez. Regardez l'endroit évident: le HttpContext et la collection HttpContext.Current.Items toujours accessibles pendant le traitement de la demande (voir http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx ).

Comme un indice :

public static class RequestScopedData
{
    private const string key = "key_that_you_choose";
    public static bool IsSaving
    {
        get
        {
            object o = HttpContext.Current.Items[key];
            return Convert.ToBoolean(o);            
        }
        set
        {
            HttpContext.Current.Items[key] = value;
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top