2009-07-23 3 views
0

Ich habe z. eine Listenseite mit Filtereingaben, von der aus der Benutzer zu einer Erfassungsseite navigieren kann, auf der er einige Zeit erfassen kann, bevor er zur Listenseite zurückkehrt. Wenn sie zur Liste zurückkehren, möchte ich, dass ihr vorheriger Filter automatisch erneut angewendet wird.Suchen nach einem Muster zum Beibehalten von Seitenfeldwerten beim Zurückkehren zu der Seite

Das ist kein Problem mit der Raketenwissenschaft, also bin ich mir sicher, dass es schon unzählige Lösungen gibt, aber ich hoffe, dass ich hier einige Antworten auf häufig verwendete Muster finden kann. Meine unmittelbare Idee ist ein Session-Objekt für die Seitenvoreinstellungen mit einem Wörterbuch pro Seite. Dies könnte auch auf längerfristige Voreinstellungen ausgedehnt werden, wenn diese länger als die Sitzung gespeichert werden.

Antwort

0

ich in einem Utility-Klasse einige Hilfsfunktionen, wo ich in den Kontrollen passieren Ich möchte Speichern oder Laden in die Sitzung. Normalerweise rufe ich die Last beim Laden der ersten Seite auf und rufe die Speicherfunktionen auf, nachdem der Benutzer eine Suche ausgeführt hat oder wann immer ich noch speichern möchte.

Ich erstellen eine neue Überladung für jede Art von Steuerelement, das ich in der Sitzung speichern möchte. Hier ist eine für eine TextBox. Ich bin mir nicht sicher, ob das ein sehr guter Code ist oder nicht, aber es scheint ziemlich gut zu funktionieren.

public void SaveToSession(TextBox control, HttpSessionState session, string SectionKey) 
{ 
    session[SectionKey + control.ID] = control.Text; 
} 

public string LoadFromSession(TextBox control, HttpSessionState session, string SectionKey, string DefaultValue) 
{ 
    string ReturnValue = ""; 
    if (session[SectionKey + control.ID] != null) 
    { 
     control.Text = session[SectionKey + control.ID].ToString(); 
     ReturnValue = session[SectionKey + control.ID].ToString(); 
    } 
    else 
    { 
     control.Text = DefaultValue; 
     ReturnValue = DefaultValue; 
    } 
    return ReturnValue; 

} 
1

Sitzung ist ein guter Ort, um diese Art von Informationen zu speichern. Ich sehe keinen Grund, warum die Verwendung von Session in diesem Fall nicht funktionieren würde.

1

ja können Sie Filter speichern für jede Seite in einem Wörterbuch Objekt, das sich in die Sitzung gebracht werden können wie:

IDictionary<string,string> pageFilters; 
if(Session["filters"]==null){ 
    pageFilters = new Dictionary<string,string>(); 
    Session["filters"]=pageFilters; 
}else{ 
    pageFilters=(IDictionary)Session["filters"]; 
} 

if(pageFilters.ContainsKey(CURRENT_PAGE_NAME OR KEY)) 
{ 
    pageFilters[CURRENT_PAGE_NAME OR KEY]=/*FILTER FOR PAGE*/; 
}else{ 
    pageFilters[CURRENT_PAGE_NAME OR KEY]=/*FILTER FOR PAGE*/; 
} 
Verwandte Themen