Avatar billede jonasbc Nybegynder
02. september 2008 - 10:47 Der er 3 kommentarer

Gemme form-indhold i session

Jeg arbejder på en ASP.NET-side, der består af et guidet forløb (via en Wizard-control). I forløbet vil jeg gerne integrere noget dankortbetaling via DIBS.
Jeg vil altså gerne redirecte (POST'e) til ekstern side og på én eller anden måde beholde de data, brugeren har indtastet, når man ryger tilbage på min side igen. ViewState ryger jo, når man skifter til en anden side, men kan det lade sig gøre på en pæn måde at gemme data f.eks. i en Session-variabel og hente det tilbage, når siden bliver vist igen?
Avatar billede softspot Forsker
02. september 2008 - 10:56 #1
Da en sessionvariabel kan risikere at udløbe inden brugeren kommer tilbage fra DIBS-formularen, er det nok en bedre løsning at oprette data i databasen og så lade DIBS-formularen sende en nøgle til de data med tilbage til dit site, når brugeren betaler. På den måde er du i det mindste sikret mod session-timeout.
Avatar billede jonasbc Nybegynder
02. september 2008 - 11:06 #2
Det er fair nok at sessionen udløber på et tidspunkt. Timeout må jo bare sættes fornuftigt.

Jeg vil helst undgå database-løsningen til at gemme informationerne, da løsningen ikke indholder en database i øjeblikket. Al data bliver samlet sammen og sendt videre til at andet sytem efterfølgende.

Jeg har forsøgt mig med en løsning, hvor jeg overrider følgende metoder:

    protected override object LoadPageStateFromPersistenceMedium()
    {
        return Session["ViewState"];
    }

    protected override void SavePageStateToPersistenceMedium(object viewState)
    {
        Session["ViewState"] = viewState;
    }

- men form data forsvinder stadig... Er det i det hele taget ViewState, jeg skal have fat i, eller kan de indtastede værdier gemmes andre steder?
Avatar billede softspot Forsker
02. september 2008 - 11:14 #3
hmm... du kan nok lave en generisk rutine som skriver data til en XML-fil (det er da semidatabaseagtigt men stadig let tilgængelig). Jeg vil mene at en iteration igennem alle felterne og en skrivning af de enkelte værdier ville kunne gøre det. Alternativt (hvis du insisterer på en session-løsning), kunne du nok gøre det samme med et sæt session-variable:

foreach(string s in Request.Form) {
  session[s] = Request.Form[s];
}

eller noget i den stil...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester