Avatar billede curriculum Nybegynder
14. november 2005 - 14:05 Der er 10 kommentarer

Viewstate problem ved postback

jeg er ved at lave en søge funktion, men vil ikke gøre brug af querystring (security issue, hacking), men istedet bruge en viewstate til søgeordet. men jeg har følgende problemer:

Hvorfor tømmes viewstate'en når jeg laver postback eller redirect ?
Hvordan kan jeg overføre min viewstate til en anden side, eller kan laves på andre bedre måder ?
Avatar billede jokkejensen Novice
14. november 2005 - 14:09 #1
Server.Transfer.... ikke redirect...
Avatar billede jokkejensen Novice
14. november 2005 - 14:16 #2
Men viewstate er mest brugt til variabler på samme side...

Den kan let "fucke" up, alternativt skal du fjerne krypteringen fra den...

Men det er bedst at bruge session objecter til at overføre værdier fra form til form.. ikke viewstate...

Mvh
Avatar billede jokkejensen Novice
14. november 2005 - 14:16 #3
(bruges vist også til smartnavigation, hvor felterne forbliver fyldte..)
Avatar billede curriculum Nybegynder
14. november 2005 - 14:27 #4
Server.Transfer er ikke del af asp.net 2.0 ....
Og sessions optager ram, men jeg kender ikke til smartnavigation endnu....
Avatar billede jokkejensen Novice
14. november 2005 - 14:58 #5
Ja de optager ram..

Men viewstate er ikke brugt til at overføre mellem 2 forms, det kan man ikke rigtigt komme uden om.. hvad skal du da gemme som kan belaste rammene meget, men godt ligge i viewstate ?
Avatar billede snepnet Nybegynder
14. november 2005 - 15:07 #6
hej curriculum

i asp.net 2.0 kan du lave et postback til en anden side (du kan f.eks. angive PostbackUrl på en knap).

viewstate tømmes ikke ved postback, men du har ret i at det smutter ved et redirect.

Server.Transfer fungerer fint i ASP.NET 2.0, og du kan lige se et par eksempler her:

// Side1.aspx
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" /></div>

og denne handler i din codebehind:
protected void Button1_Click(object sender, EventArgs e)
{
    Server.Transfer("Side2.aspx");
}


// eller som alternativ
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" PostBackUrl="Side2.aspx" /></div>

// codebehind for Side2.aspx - er gangbar i begge situationer
protected void Page_Load(object sender, EventArgs e)
{
    if (PreviousPage is CrossPage_Side1)
    {
        TextBox tb = PreviousPage.FindControl("TextBox1") as TextBox;
        Response.Write(tb.Text);
    }
}

mvh
Avatar billede curriculum Nybegynder
14. november 2005 - 15:26 #7
Hvordan oversætter jeg den her til vb...
if (PreviousPage is CrossPage_Side1)
    {
        TextBox tb = PreviousPage.FindControl("TextBox1") as TextBox;
        Response.Write(tb.Text);
    }

Min side hedder default.aspx, og min textbox txtSearch
Avatar billede snepnet Nybegynder
14. november 2005 - 15:47 #8
If TypeOf PreviousPage Is _default Then
        Dim tb As TextBox =  PreviousPage.FindControl("txtSearch") as TextBox
        Response.Write(tb.Text)
End If

du kan finde en oversætter her:
http://www.ragingsmurf.com/vbcsharpconverter.aspx

_default skal være klassenavnet i din codebehindfil til den side du kommer fra... hedder siden default, men jeg klassen kommer til at hedde _default, men check det lige.

mvh
Avatar billede curriculum Nybegynder
14. november 2005 - 16:06 #9
send et svar snepnet... det var lige det jeg havde brug for ! virker super....
Avatar billede snepnet Nybegynder
14. november 2005 - 16:51 #10
det var jo bare fint så :o)
mvh
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