Frage

Kann ich eine Art globaler Variable für die Länge einer einzelnen Anfrage eingestellt, so dass alle Steuerelemente der Seite darauf reagieren können, ohne dass es passiert jeden von ihnen durch?

Zum Beispiel, wenn jemand eine Schaltfläche Speicher auf meinem Master getroffen, konnte ich gesetzt etwas, so dass jede Usercontrol auf meiner Seite kann eine Page_Load wie hat:

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

Es scheint nur viel einfacher, als einen Vertreter aus der Masterpage mit Aufruf der Seite der Save-Funktion, die dann ruft UC1.saveData () zu jedem Usercontrol, obwohl ich weiß, das ist besser Object Oriented Denken.

War es hilfreich?

Lösung

Ja, Sie können. Schauen Sie sich den offensichtlichen Ort: die Httpcontext und die HttpContext.Current.Items Sammlung, die immer zugänglich während der Anfrage ist Kosten (siehe http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx ).

So wie ein Hinweis :

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;
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top