Avatar billede ladyhawke Novice
01. oktober 2007 - 11:16 Der er 24 kommentarer og
1 løsning

ViewState tom når jeg læser den fra anden side

Jeg har via Page1 gemt denne værdi i viewstate (eksempel) ViewState["myValue"]= "xyz";

Den vil jeg gerne have fat i på den efterfølgende side (Page2),
Men det ser ud til den er tom når jeg prøver:
ViewState["myValue"].ToString();

Nogen ideer til hvad jeg kan mangle eller en anden effektiv måde at overføre data mellem siderne på (ikke hidden inputs)?

NB benytter C# og .NET 1.1
Avatar billede kalp Novice
01. oktober 2007 - 11:22 #1
din viewstate er korrekt nok, men dine elementer og sidder skal have viewstate slået til.

Øverst på siderne kan du tilføje dette til @Page tag'et

EnableViewState="true"

og du kan også gøre det samme direkte på dine kontroller så du er sikker på de understøtter det.
Avatar billede kalp Novice
01. oktober 2007 - 11:24 #2
f.eks

<asp:HiddenField ID="Test" EnableViewState="true" Value="Test" runat="server"></asp:HiddelField>
Avatar billede ladyhawke Novice
01. oktober 2007 - 11:25 #3
er enable viewstate ikke default for en side?

det er ikke kontrollerne der driller, men mine egne værdier...
Avatar billede ladyhawke Novice
01. oktober 2007 - 11:29 #4
Har lige prøvet at sætte det ind på de 2 sider, men det gør ingen forskel, jeg får stadig object reference not set to an instance of an object, når jeg prøver at læse værdien på side 2
Avatar billede kalp Novice
01. oktober 2007 - 11:29 #5
kan du uddybe hvad det er du prøver på, at opnå?
og hvordan kommer du fra side 1 til side 2?
via. Redirect eller submit form?

hvis alt driller og du bare skal have en værdi over så kan du jo gemme i Session istedet for ViewState
Avatar billede ladyhawke Novice
01. oktober 2007 - 11:33 #6
Jeg skal bare have værdien med så jeg kan læse den på andre sider og pt. går jeg til siden ved hjælp af en javascript submit (det er noget gammelt kode jeg er ved at opdatere). Det burde kunne ændres til redirect hvis det er...
Avatar billede kalp Novice
01. oktober 2007 - 11:45 #7
jeg tror man skal se noget kode... du har spurgt tidligere om det samme så kan regne ud, at Request ikke fungerer for dig.

Prøv som sagt Session som bør virke.
Avatar billede neoman Novice
01. oktober 2007 - 11:47 #8
Du kan IKKE overføre værdier fra en side til en anden via ViewState. ViewState gemmes på klienten og sendes tilbage ved postback, men hvis du går til en ny side så er der ingen viewstate på den side, før du eksplicit selv gemmer noget info der.

Følg kalps råd og brug session.
Avatar billede neoman Novice
01. oktober 2007 - 11:49 #9
hvis du vil overføre ting fra en side til en anden uden at bruge session så kig på cross-page posting : http://msdn2.microsoft.com/en-us/library/ms178139(vs.80).aspx
Avatar billede kalp Novice
01. oktober 2007 - 11:50 #10
neoman > ville jeg også have foreslået, men slettede kommentaren da det kun virker i 2.0:D
Avatar billede ladyhawke Novice
01. oktober 2007 - 12:28 #11
netop... det hjælper ikke i .NET 1.1 :o)
Avatar billede ladyhawke Novice
01. oktober 2007 - 12:54 #12
Avatar billede neoman Novice
01. oktober 2007 - 12:55 #13
nej - har du læst 01/10-2007 11:47:15?
Avatar billede kalp Novice
01. oktober 2007 - 12:59 #14
eller evt. blot kommenterer hvorfor du ikke benytter dig af Session som foreslået:)
Avatar billede ladyhawke Novice
01. oktober 2007 - 13:04 #15
jeg har læst det ja, og session har jeg pt ikke brugt, fordi det ikke et sat til i web sitets web.config og den har jeg ikke rigtig råderet over
Avatar billede neoman Novice
01. oktober 2007 - 13:12 #16
du kan ikke benytte ViewState til det du ønsker, uanset om session er slået til eller fra. Har du forstået forklaringen?

Du kunne måske lægge værdien  i en cookie på klienten - og måske har kalp en bedre idé
Avatar billede ladyhawke Novice
01. oktober 2007 - 13:13 #17
jeg har fanget ideen og må overveje om jeg kan få lov at bruge session, cookies er sidste udvej.
Avatar billede ladyhawke Novice
01. oktober 2007 - 13:16 #18
I må hellere lægge svar begge 2, I har bidraget til min almene oplysning og orientering :o)
Avatar billede kalp Novice
01. oktober 2007 - 13:17 #19
hvis din javascript submitter form'en så havner du stadig i din page load først da den altid bliver afviklet.

tilføj dine værdier til din url du laver redirekt til manuelt..

dvs. hvis du laver Response.Redirect("side2.aspx");

så laver du istedet Response.Redirect("side2.aspx?myvalue="+ Request["MyValue"]);

fra side side2.aspx kan så benytter Request helt normalt.

nu kan min kode forresten skrives pænere, men det var bare ideen i den.

og der er egentlig mange gode muligheder, men det er svært at tankelæse din kode så du må prøve dig lidt frem:)
Avatar billede kalp Novice
01. oktober 2007 - 13:18 #20
Jeg har arbejdet med et site hvor man benytter ovenstående metode til at flytte værdier fra side1 til side10.

Den er mere sikker end cookies som kan være slået fra:)
Avatar billede neoman Novice
01. oktober 2007 - 13:21 #21
denne her er kalps, da han kom med noget brugbart.
Avatar billede ladyhawke Novice
01. oktober 2007 - 13:24 #22
neoman: dit var også brugbart... det var din kommentar der endelig fik mig til at se lyset (at jeg ikke kunne bruge viewstate). Hvis du insisterer går pointene ubeskåret til kalp
Avatar billede neoman Novice
01. oktober 2007 - 13:34 #23
jeg insisterer:)
Avatar billede ladyhawke Novice
01. oktober 2007 - 13:41 #24
OK, takker og bukker! :oD
Avatar billede kalp Novice
01. oktober 2007 - 15:07 #25
tak for point:)

at dele dem havde været helt fint:)
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