webForumDet fria alternativet

Mellanlagra data vid registrering i flera steg?

.NET

15 svar · 821 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Hej! Jag skulle behöva lite input hur jag ska mellanlagra data vid en registrering. registreringen kommer att delas upp i flera steg och om då användaren avbryter i låt säga steg 2 så vill jag såklart inte ha en halvfärdig registrering sparad i databasen. Visst kan man ta bort ofärdiga registreringar i efterhand, men jag skulle hellre vilja ha ett objekt av något slag som håller informationen till sista steget där all skickas upp i db på en gång.

Förslag? :)

Medlem sedan dec. 20003 563 inlägg
#2

Det vanligaste sättet, antar jag, är att skapa hela registreringsformuläret med forms på en och samma sida. Beroende på vilken del av formuläret man är på väljer man bara att visa vissa delar av denna m.h.a. t.ex. panels.visible.

Angående att skriva in i databasen efter varje halvfärdigt steg låter lite, ovanligt. Låt all info ligga kvar i forms tills registreringen är komplett. Därefter lägger du in allt eller inget istället.

Medlem sedan maj 20012 812 inlägg
#3

Session objektet låter som något som du är ute efter...

- M

Medlem sedan dec. 20003 563 inlägg
#4

Session objektet låter som något som du är ute efter...

En fråga från en som inte är i industrin än till en som är. Använder man hellre sessions istället för att styra forms-delar med visible? Specifikt för asp.net såklart.

Medlem sedan apr. 2004298 inlägg
#5

Sessions känns väl overkill, eller?

Viewstaten borde väl räcka för att lagra mellanpostningarna.

/p

Medlem sedan dec. 19996 522 inlägg
#6

Wizardkontrollen i asp.net 2 kanske passar sig bra för ändamålet

Medlem sedan apr. 2004298 inlägg
#7

Jag har klämt lite på Wizard-kontrollen och gillade den inte.. dels för att den (vad jag vet) renderar en massa tabeller samt kändes omständig för att skapa små wizards. Den kanske passar bättre till stora wizards med många sidor/delar.

Medlem sedan aug. 20003 575 inlägg
#8

En transaktion låter som det kanske är något?

Medlem sedan maj 20012 812 inlägg
#9

paradox skrev:

Sessions känns väl overkill, eller?

Viewstaten borde väl räcka för att lagra mellanpostningarna.

Det beror på hur man bygger upp det. Du har två aspekter att ta hänsyn till. Om du lägger fomulären över flera sidor så kan du inte använda viewstaten.... Sedan är det så att viewstaten skickas fram och tillbaka till klienten, så om du har mycket data som skall skrivas in, så är viewstaten inte den bästa lösningen.

Sessions objektet är inte overkill, då det är väldigt enkelt att använda och ta relativt lite prestanda att använda...

- M

Medlem sedan maj 20012 812 inlägg
#10

nickemannen skrev:

En transaktion låter som det kanske är något?

usch nej.. dels så kan du få problem med låsningar i databasen, dels så måste man hålla samma koppling till databasen öppen så långe som inmatningen kräver det, vilket betyder att man drastiskt minskar skalbarheten för sin applikation...

- M

Medlem sedan dec. 19996 522 inlägg
#11

Det kommer en uppdatering som gör att de flesta kontroller kan sköta layoyten via css istället för tabeller inom kort, kör man server.transfer får man väll tillgång till viewstaten?

Medlem sedan maj 20012 812 inlägg
#12

kör man server.transfer får man väll tillgång till viewstaten?

nu har jag inte forskat närmare i viewstaten men den måste ju para ihop datan med en kontrol, och det kräver så fall att samma antal kontroller finns på sidan som du server.transfer till, samt att id:et borde vara samma som de från första sidan.

Sedan om jag förstått viewstaten korrekt, så skall den inte överföras mellan 2 sidor, så även om du gör en server.transfer så bör du inte få tillgång till den, det är dock inget som jag kontrollerat, bara läst att en viewstate endast är tillgänglig inom samma sida.

- M

Medlem sedan sep. 20011 914 inlägg
#13

Här är några alternativ. Om du skall köra på samma sida så skulle nog MultiView kontrollen passa bäst. Då du vill ha full kontroll över htmlen och datan sparas mellan de olika stegen i viewstate. Om du skall köra över flera sidor är Cross-page posting det du skall välja.

Medlem sedan dec. 19996 522 inlägg
#14

Gladh, jag var nog trött när jag skrev det där. Kör du på 1.1 istället för 2 kan du ju deklarera en Reference Page (via server.transfer) om du inte har tillgång till Cross-page posting

Medlem sedan sep. 2005673 inlägg
#15

Tack för alla svar! Men om jag nu ska använda mig av sessions... vad ska jag stoppa i sessionsobjektet? Antar att man inte ska spara undan värdet i varje inputfält i en egen session? Är det smart att exempelvis ha en datatable i sessionsobjektet och sedan på nåt sätt smacka in allt från datatablen till dbn i sista steget?

Medlem sedan maj 20012 812 inlägg
#16

Skall du använd dig av Session objektet så rekomenderar jag dig att du skapar olika objekt som matchar de input data som du är uteefter och spara ner dessa i sessionobjektet efterhand som de skapas, på sista sida när allt skall sparas ner i databasen så plockar du ut dessa objekt och spara ner i databasen, här skall du nu använda dig av transaktioner som garanterar att allt eller inget sparas i databasen.

- M

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)